Português

Apagar arquivos e pastas no Linux pela linha de comando

4 min
Alojamento VPS/VDS

Ao final deste tutorial, você saberá apagar um arquivo, uma pasta vazia, uma árvore de diretórios completa e arquivos filtrados por nome ou por idade, conferindo sempre o alvo antes de agir. No Linux, a linha de comando não tem lixeira: toda remoção é definitiva. Por isso, o método importa tanto quanto o comando.

Pré-requisitos

  • Acesso ao shell de uma máquina Linux (local ou via SSH), por exemplo um VPS Linux
  • Um usuário com permissão de escrita na pasta em questão (ou sudo)
  • Um backup recente do que é importante

Conferir o alvo antes de apagar

Entre na pasta correta e liste o conteúdo. Leva dois segundos e evita a maioria dos acidentes.

Bash
pwd ls -la

Se for usar um padrão (extensão, prefixo), mostre antes o que ele vai atingir. O rm usará exatamente a mesma lista.

Bash
ls -d *.log

Apagar um arquivo

O comando básico é o rm.

Bash
rm report.txt

Acrescente -i para que ele peça confirmação e -v para que mostre o que está removendo.

Bash
rm -iv report.txt

Depois, confira com ls report.txt: a mensagem "No such file or directory" confirma que o arquivo foi removido.

Apagar vários arquivos

Os curingas do shell permitem atingir um lote de arquivos. Liste primeiro com ls e só então apague.

Bash
rm -v *.tmp rm -v photo_{01..05}.jpg

Evite um curinga solto como rm * em uma pasta da qual você não tem certeza. Se o nome de um arquivo começar com hífen, use -- para indicar o fim das opções:

Bash
rm -- -strange-file.txt

Apagar uma pasta vazia

O rmdir só remove pastas vazias. É intencional: ele funciona como uma trava de segurança.

Bash
rmdir old_folder

Para remover também os diretórios pai que ficarem vazios:

Bash
rmdir -p project/cache/tmp

Apagar uma pasta e todo o seu conteúdo

Aqui é necessária a opção recursiva -r. Antes, estime o que você vai perder.

Bash
du -sh old_project find old_project -type f | wc -l

Depois apague, com confirmação:

Bash
rm -ri old_project

Com milhares de arquivos, a confirmação se torna inviável. A opção -f a desativa:

Bash
rm -rf old_project

Nunca coloque uma variável não verificada nesse comando. Com rm -rf "$DIR"/, se $DIR estiver vazia, o alvo passa a ser a raiz do sistema. Em um script, adicione set -u ou use "${DIR:?}", que interrompe a execução se a variável estiver vazia.

Apagar arquivos por idade

O find filtra por critérios precisos (nome, tipo, idade, tamanho). O princípio é executar primeiro sem nenhuma ação e só depois acrescentar -delete.

Bash
find /var/log/myapp -type f -name "*.log" -mtime +30

Se a lista corresponder ao que você espera:

Bash
find /var/log/myapp -type f -name "*.log" -mtime +30 -delete

-mtime +30 designa os arquivos modificados há mais de 30 dias. Coloque -delete por último: o find avalia as condições da esquerda para a direita, e um -delete posicionado cedo demais apaga tudo.

Apagar com mais segurança um arquivo sensível

O rm remove a entrada do arquivo, não necessariamente os dados do disco. O shred sobrescreve o conteúdo antes de remover.

Bash
shred -u -v secret.key

Esse método tem limites em SSDs, sistemas de arquivos com journaling ou volumes com snapshots, onde dados antigos podem permanecer. Para dados realmente sensíveis, a solução confiável continua sendo criptografar o disco desde o início.

Corrigir os erros mais comuns

Permission denied

Você não tem permissão de escrita na pasta pai (é ela que controla a remoção, não o arquivo). Verifique com ls -ld DIRECTORY e, se for legítimo, use sudo:

Bash
sudo rm -v /path/to/file

Operation not permitted, mesmo com sudo

O arquivo provavelmente tem o atributo imutável. Consulte o atributo, remova-o e então apague.

Bash
lsattr file.txt sudo chattr -i file.txt sudo rm file.txt

Argument list too long

O curinga gerou mais argumentos do que o sistema aceita. Use o find, que processa os arquivos um a um:

Bash
find . -maxdepth 1 -type f -name "*.tmp" -delete

Directory not empty ou Device or resource busy

Com o rmdir, a primeira mensagem é normal: a pasta contém arquivos, inclusive ocultos (ls -A). Se um ponto de montagem ou um processo a estiver usando, identifique-o com lsof +D DIRECTORY ou findmnt e libere a pasta antes de tentar de novo.

Para praticar sem risco, uma instância descartável ajuda: em um VPS, você pode criar uma pasta de teste e errar sem consequências. Outros guias do mesmo tipo estão reunidos na seção de tutoriais.

FAQ

É possível recuperar um arquivo apagado com rm?

Raramente e sem garantia. Ferramentas como extundelete ou testdisk às vezes recuperam dados, desde que você pare imediatamente de gravar no disco. A única proteção confiável continua sendo o backup.

Qual é a diferença entre rm -r e rm -rf?

O rm -r apaga recursivamente, mas pede confirmação para arquivos protegidos contra escrita. O rm -rf força a remoção e ignora em silêncio os arquivos inexistentes. Reserve-o para os casos em que você já conferiu o alvo.

Como apagar uma pasta cujo nome contém espaços?

Coloque o nome entre aspas ou escape os espaços: rm -r "My folder" ou rm -r My\ folder. Sem isso, o shell trata cada palavra como um item separado.

Existe uma lixeira na linha de comando?

Sim, por meio do pacote trash-cli (comando trash-put), que move os itens para a lixeira do usuário em vez de apagá-los. Em um servidor, ele raramente vem instalado por padrão: adquira o hábito de listar antes de apagar.

Fique a par das últimas ofertas, descontos e promoções especiais.

Ver promoções

Utilizamos cookies

Utilizamos cookies analíticos para melhorar a sua experiência no nosso site. Nenhum dado é vendido a terceiros. Saiba mais na nossa política de privacidade.