Linux / Comando / rm / Comando para excluir arquivos ou diretórios

O comando rm no Linux exclui arquivos, e usando a opção -r também exclui diretórios e seus conteúdos. Como geralmente não passa pela lixeira, certifique-se de verificar o caminho e os itens a serem excluídos antes de executar o comando.

Coisas a verificar antes da exclusão

Este artigo é baseado no rm do GNU coreutils e no shell Bash. Arquivos excluídos com rm podem ser difíceis de recuperar por métodos normais. Faça backup dos arquivos importantes separadamente e verifique sua localização atual e o destino primeiro com pwd e ls -la.

rm não exibe uma mensagem de confirmação todas as vezes. O comportamento padrão depende das permissões de gravação do arquivo, se a entrada é de um terminal, etc., e as configurações de alias no shell também podem afetá-lo. Para confirmar cada arquivo explicitamente, use -i. Para condições detalhadas, consulte o manual do GNU rm.

Excluindo Arquivos

Abaixo está um exemplo de como criar um novo diretório de prática e preparar arquivos para excluir dentro dele. Se rm-practice já existir no local atual, use outro local vazio, e se o primeiro comando falhar, não continue executando.

mkdir rm-practice
cd rm-practice
printf 'practice\n' > sample.txt
ls

Após confirmar que sample.txt está exibido, execute o comando abaixo. Na mensagem de confirmação, insira y para excluir, ou insira n se você não quiser excluir.

rm -i sample.txt
ls

Se você aprovou a exclusão, sample.txt não aparecerá mais nos resultados de ls. rm sample.txt pode excluir o arquivo sem confirmação, então não presuma que uma mensagem de confirmação aparecerá sempre.

Excluindo Diretórios

Para excluir apenas um diretório vazio, você pode usar rmdir. Normalmente, falha se o diretório não estiver vazio.

mkdir empty-dir
rmdir empty-dir

Para excluir diretórios com conteúdo, use -r. O comando abaixo cria diretórios e arquivos de prática, verifica-os e, em seguida, os exclui. Usar -i junto pedirá confirmação para cada item.

mkdir example-dir
printf 'practice\n' > example-dir/file.txt
ls -la example-dir
rm -ri example-dir

As mensagens de confirmação podem perguntar sobre entrar em diretórios e excluir arquivos e diretórios. Antes de responder a cada pergunta, verifique o nome e aprove apenas os itens que você pretende excluir. Recusar algumas perguntas pode resultar na manutenção do diretório ou na exibição de erros.

Curingas e arquivos ocultos

Padrões como *.txt são expandidos pelo shell para os nomes correspondentes antes que rm seja executado. Antes de excluir vários arquivos de uma vez, primeiro verifique os nomes correspondentes com um comando como o seguinte, em vez de usar o comando de exclusão.

printf '%s\n' ./*.txt

Depois de confirmar que os nomes exibidos são os alvos pretendidos, use rm -i ./*.txt apenas quando necessário. Se não houver arquivos correspondentes, o padrão pode ser exibido tal como está ou o comportamento do comando pode mudar dependendo das configurações do Bash. Colocar todo o padrão entre aspas impede a expansão usual de nomes de arquivos.

Nas configurações padrão do Bash, * não inclui itens ocultos que começam com um ponto, mas isso pode variar dependendo de configurações como dotglob. Comandos que excluem uma ampla gama, como rm -rf *, sem verificação, podem causar danos significativos se a localização atual e os resultados da expansão forem mal interpretados. As diferenças para cada configuração podem ser verificadas na documentação do Bash sobre expansão de nomes de arquivos.

Opções e caminhos frequentemente usados

  • -i: Confirme cada item a ser excluído. Itens que forem negados não serão excluídos.
  • -r: Exclua recursivamente o conteúdo dentro do diretório.
  • -f: Ignore os alvos que não existem e não exiba mensagens de confirmação. Esta opção não resolve erros de permissão.
  • -v: Exiba os itens excluídos para ajudar a verificar os resultados.

Caminhos com espaços devem ser colocados entre aspas, como rm -i "my file.txt". Se o nome do arquivo começar com um hífen, especifique-o após --, como rm -i -- -draft.txt, para evitar que seja interpretado como uma opção.

Se houver um erro de permissão, verifique se você possui as permissões necessárias no diretório pai do destino e consulte o administrador. A possibilidade de exclusão não é determinada apenas pela permissão de escrita do próprio arquivo. Após a exclusão, verifique novamente a listagem do diretório e, se você tiver excluído um arquivo necessário, pare imediatamente a operação e verifique o procedimento de backup ou recuperação do ambiente de produção.