Como removo um diretório e todo o seu conteúdo?


141

No bash tudo o que sei é que

rmdir directoryname

irá remover o diretório, mas apenas se estiver vazio. Existe uma maneira de forçar a remoção de subdiretórios?

Respostas:


216

O comando a seguir fará isso por você. Tenha cuidado, porém.

rm -rf directoryname

52
"-f" é "--force", que substitui algumas verificações de sanidade e avisos. Um comando mais seguro para começar seria rm -r directoryname.
Jim Paris

Por algum motivo, recebo um rm: invalid option -- rerro ao tentar excluir um diretório com rm -r <directoryname>.
Sunspawn

@Sunspawn Verifique esta questão relacionada para ver se é esse o caso.
precisa saber é o seguinte

11
@ JimParis Acho que a palavra "mais seguro" é relativa. Suponha que você esteja escrevendo um script para executar em um computador remoto. Esse script possui um comando que deve remover um diretório. Aqui, seria "mais seguro" usar rm -rf directorynameporque você não gostaria que seu script pausasse a execução, porque está aguardando a entrada do usuário. Obviamente, você deve ter certeza de que excluir o diretório não faria mal.
John Red

7

Se rm -rf directorynamefalhar, tente usar rm -R -f directoryname, ou rm --recursive -f directoryname.

Se você não tiver sorte com isso, considere reinstalar o rm ou alternar os shells.


Essas eram as opções disponíveis na minha página de manual, procurei digitando man rmpara ver minhas opções sobre exclusão recursiva e as opções de força .
saterHater

Sua rmpágina de manual lista -r? O que isso faz? (Experimente-o em um diretório criado apenas para fins de teste, com apenas arquivos fictícios (e talvez subdiretórios).) Qual sistema operacional você está usando?
G-Man

PS Se rm -rnão funcionar, isso seria um problema do SO, não um problema de shell. (Estritamente falando, seria um problema com a versão rmque você está usando, para que você possa resolvê-lo instalando uma versão diferente rmou pesquisando no sistema para ver se você já tem uma versão diferente rmem algum diretório diferente de /bin.)
G-Man

Ah, certo. Esqueci de mencionar que estou no Ubuntu 14.04 Quando corri man rmno meu terminal, ele me deu um arquivo de texto com o lessvisualizador de texto. Eu rolei e encontrei uma entrada recuada com um todo que tinha as opções -R e --recursive combinadas com a opção -r , significando que todos esses argumentos são idênticos.
saterHater

11
edit: você já tentousudo rm -r directoryName ? As regras não escritas dos comandos básicos são que -rpermitirão que um programa seja executado recursivamente em todos os arquivos do seu sistema de arquivos (começando onde você escolher!) E que -f fará as coisas com força, mesmo que seja perigoso . 'cd', 'mv', 'ls' principalmente mantém esse princípio verdadeiro. ls -r /será um duzie e cp -rf / /dev/nulldestruirá tudo no seu sistema de arquivos. <- Nunca execute esse comando!
saterHater
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.