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?

Piperchester
fonte

Respostas:

216

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

rm -rf directoryname
Phillip Nordwall
fonte
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.

saterHater
fonte
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