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:
cd ..; rm -rf -- <dir-to-remove>
Os dois travessões --indicam rmque <dir-to-remove>não é uma opção de linha de comando, mesmo quando começa com um travessão.
rm ./pode digitar acidentalmente, o rm . /que pode ser um desastre.
Irá deletar todos os arquivos / diretórios abaixo do atual.
find -mindepth 1 -delete
Se você quiser fazer o mesmo com outro diretório cujo nome você tem, basta nomear esse
find <name-of-directory> -mindepth 1 -delete
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 -deletepara obter uma lista das coisas que serão removidas.
-mindepth 1se 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 usar find -delete).
find -mindepth 1 -deletemas consegui, illegal option -- mmas funcionou muito bem quando removi a opção mindepth find . -delete
O que eu sempre faço é digitar
rm -rf *
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:
bind TAB:insert-completions
--nesta resposta? Essa abordagem é incrível no geral, devo dizer.
Usar
rm -rf *
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:
rm -ri *
(isso solicita uma confirmação antes de excluir todos os arquivos / diretórios.)
É 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 rmpágina do manual do comando ( man rmna maioria dos Unix), você notará que –rsignifica "remover o conteúdo dos diretórios recursivamente". Então, fazer rm -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 -ique substitui os -fmeios "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 emprego rm -ri.
certifique - se de que está no diretório correto
rm -rf *
Acredito que esta resposta seja melhor:
/unix/12593/how-to-remove-all-the-files-in-a-directory
Se seu diretório de nível superior for chamado
images, executerm -r images/*. Isso usa o operador shell glob*para executarrm -rem cada arquivo ou diretório dentro de imagens.
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)