Eu sei que isso excluirá tudo em um subdiretório e abaixo dele:
rm -rf <subdir-name>
Mas como você exclui tudo no diretório atual, bem como todos os subdiretórios abaixo dele e o conteúdo de todos esses subdiretórios?
Eu sei que isso excluirá tudo em um subdiretório e abaixo dele:
rm -rf <subdir-name>
Mas como você exclui tudo no diretório atual, bem como todos os subdiretórios abaixo dele e o conteúdo de todos esses subdiretórios?
Respostas:
Pratique computação segura. Basta subir um nível na hierarquia e não usar uma expressão curinga:
Os dois travessões
--
indicamrm
que<dir-to-remove>
não é uma opção de linha de comando, mesmo quando começa com um travessão.fonte
rm ./
pode digitar acidentalmente, orm . /
que pode ser um desastre.Irá deletar todos os arquivos / diretórios abaixo do atual.
Se você quiser fazer o mesmo com outro diretório cujo nome você tem, basta nomear esse
Se você deseja remover não apenas os subdiretórios e arquivos, mas também o próprio diretório, omita
-mindepth 1
. Faça isso sem o-delete
para obter uma lista das coisas que serão removidas.fonte
-mindepth 1
se estiver especificando um diretório (find <name-of-directory> -mindepth 1 -delete
). Caso contrário, Johannes está certo, ele não excluirá o diretório de trabalho atual (ao usarfind -delete
).find -mindepth 1 -delete
mas consegui,illegal option -- m
mas funcionou muito bem quando removi a opção mindepthfind . -delete
O que eu sempre faço é digitar
e então pressione ESC- * , e o bash irá expandir o * para uma lista explícita de arquivos e diretórios no diretório de trabalho atual.
Os benefícios são:
Na verdade, gosto tanto disso que tornei o comportamento padrão para TAB com esta linha em .bashrc:
fonte
--
nesta resposta? Essa abordagem é incrível no geral, devo dizer.Usar
Update: O
.
significa diretório atual, mas não podemos usar isso. O comando parece ter verificações explícitas para.
e..
. Em vez disso, use o caractere curinga. Mas isso pode ser arriscado.Uma versão mais segura do IMO é usar:
(isso solicita uma confirmação antes de excluir todos os arquivos / diretórios.)
fonte
É correto
rm –rf .
remover tudo no atual diretamente, incluindo quaisquer subdiretórios e seu conteúdo. O único ponto (.
) significa o diretório atual. tome cuidado para não fazer isso,rm -rf ..
pois o ponto duplo (..
) significa o diretório anterior.Dito isso, se você é como eu e tem várias janelas de terminal abertas ao mesmo tempo, é melhor estar seguro e usar
rm -ir .
Vejamos os argumentos do comando para entender o porquê.Primeiro, se você olhar a
rm
página do manual do comando (man rm
na maioria dos Unix), você notará que–r
significa "remover o conteúdo dos diretórios recursivamente". Então, fazerrm -r .
sozinho excluiria tudo no diretório atual e tudo abaixo dele.No
rm –rf .
adicionado -f significa "ignorar arquivos inexistentes, nunca solicitar". Esse comando exclui todos os arquivos e diretórios no diretório atual e nunca solicita que você confirme se realmente deseja fazer isso.-f
é particularmente perigoso se você executar o comando com um usuário com privilégios, já que pode excluir o conteúdo de qualquer diretório sem ter a chance de ter certeza de que é realmente o que deseja.Por outro lado,
rm -ri .
no-i
que substitui os-f
meios "prompt antes de qualquer remoção". Isso significa que você terá a chance de dizer "ops! Não é isso que eu quero" antes que o rm exclua todos os seus arquivos.Em meus primeiros dias de administrador de sistemas, eu fiz um
rm -rf /
em um sistema enquanto estava conectado com todos os privilégios (root). O resultado foi dois dias passados restaurando o sistema dos backups. É por isso que agora empregorm -ri
.fonte
E se:
fonte
Não faça isso! É perigoso! VERIFIQUE SE VOCÊ ESTÁ NO DIRETÓRIO CERTO!
fonte
certifique - se de que está no diretório correto
fonte
Esta solução segura e geral mais simples é provavelmente:
fonte
Acredito que esta resposta seja melhor:
/unix/12593/how-to-remove-all-the-files-in-a-directory
basicamente você sobe um nível e, em seguida, diz delete tudo dentro do diretório X. Desta forma, você ainda está especificando qual pasta deve ter seu conteúdo excluído, o que é mais seguro do que apenas dizer 'exclua tudo aqui ", enquanto preserva a pasta original, (que às vezes você deseja porque não tem permissão ou simplesmente não quer para modificar as permissões existentes da pasta)
fonte