Como faço para excluir todos os arquivos com um determinado nome em todos os subdiretórios?


25

Quero excluir todos os arquivos com um determinado nome em todos os subdiretórios do meu diretório pessoal.

Eu tentei:

rm -r file

no meu diretório pessoal, mas não funcionou porque esse arquivo não existe nesse diretório.

Respostas:



12

como uma elaboração da resposta do @ tante, convém garantir que a lista de arquivos usada esteja correta antes de excluir esses arquivos:

find <source_dir> -name <filename> -print

se a inspeção mostra uma lista válida,

find <source_dir> -name <filename> -delete

outra opção, se você desejar isso em muitos diretórios usando um diretório temporário:

mkdir <dest_dir>
for i in <list_of_directories>
do
  find "$i" -name <filename> -exec /bin/mv {} <dest_dir>
done

# check dest_dir
ls dest_dir
rm -rf <dest_dir>

Como sempre, garanta a precisão de qualquer script antes da execução e sempre tenha um backup pronto, caso algo dê errado.


3
sempre coloque aspas duplas em torno das substituições de variáveis, ou seu comando não funcionará com nomes de arquivos que contenham certos caracteres especiais (espaço em branco, curingas e barras invertidas).
Gilles 'SO- stop be evil' em

@Gilles - Sim, obrigado por atualizar e garantir que esta resposta esteja correta.
Wayne
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.