Remoção de arquivos e diretórios


O comando rm remove arquivos, por padrão, rm não remove diretórios.

Você pode usar o comando rm -r ou a opção --recursive para habilitar o comando de excluir diretórios e seu conteúdo.

Nota

O comando rm -r percorre cada subdiretório primeiro, removendo individualmente seus arquivos antes de remover cada diretório.

No exemplo a seguir, o comando rm exclui o arquivo thesis_chapter1.txt sem opções, mas para excluir o diretório Thesis/Chapter1, você deve adicionar a opção -r.

[user@host Documents]$ ls -l Thesis/Chapter1
-rw-r--r--. 1 user user 7100 Mar  7 14:37 thesis_chapter1.txt
[user@host Documents]$ rm Thesis/Chapter1/thesis_chapter1.txt
[user@host Documents]$ rm Thesis/Chapter1
rm: cannot remove 'Thesis/Chapter1': Is a directory
[user@host Documents]$ rm -r Thesis/Chapter1
[user@host Documents]$ ls -l Thesis
drwxr-xr-x. 2 user user 6 Mar  7 12:37 Chapter2
drwxr-xr-x. 2 user user 6 Mar  7 12:37 Chapter3

O Red Hat Enterprise Linux não existe um recurso de cancelamento de exclusão na linha de comando ou uma Lixeira da qual restaurar arquivos suspensos para exclusão. Uma lixeira é um componente de um ambiente de área de trabalho como o GNOME, mas não é usado por comandos executados em um shell.

É uma boa ideia verificar seu diretório de trabalho atual antes de remover um arquivo ou diretório usando caminhos relativos.

[user@host Documents]$ pwd
/home/user/Documents
[user@host Documents]$ ls -l thesis*
-rw-r--r--. 1 user user 11431 Mar  7 14:39 thesis_chapter2_reviewed.txt
[user@host Documents]$ rm thesis_chapter2_reviewed.txt
[user@host Documents]$ ls -l thesis*
ls: cannot access 'thesis*': No such file or directory

Você pode usar a opção -i do comando rm para solicitar interativamente a confirmação antes da exclusão. Já a opção -f força a remoção sem solicitar a confirmação do usuário.

Nota

Se você especificar as opções -i e -f, a opção -f tem prioridade e você não será solicitado para confirmação antes que rm exclua arquivos.

[user@host Documents]$ rm -ri Thesis
rm: descend into directory 'Thesis'? y
rm: descend into directory 'Thesis/Chapter2'? y
rm: remove regular empty file 'Thesis/Chapter2/thesis_chapter2.txt'? y
rm: remove directory 'Thesis/Chapter2'? y
rm: remove directory 'Thesis/Chapter3'? y
rm: remove directory 'Thesis'? y

Você também pode usar o comando rmdir para remover diretórios vazios. Use a opção -r do comando rm para excluir diretórios não vazios.

[user@host Documents]$ pwd
/home/user/Documents
[user@host Documents]$ rmdir ProjectZ
[user@host Documents]$ rmdir ProjectX
rmdir: failed to remove 'ProjectX': Directory not empty
[user@host Documents]$ rm -r ProjectX
[user@host Documents]$

Referências