Como excluo todos os arquivos com um nome em todos os subdiretórios?

12

Eu quero excluir todos os arquivos com um nome específico 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.

    
por oadams 01.11.2010 / 09:50

2 respostas

19

find . -name "filename" -delete

    
por 01.11.2010 / 09:58
9

como uma elaboração sobre a resposta de @ tante, você pode querer garantir que a lista de arquivos usada esteja correta antes de excluir esses arquivos:

find <source_dir> -name <filename> -print

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

find <source_dir> -name <filename> -delete

outra opção se você quiser usar vários 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, assegure-se de que a precisão de qualquer script antes da execução e sempre tenha um backup pronto, caso algo dê errado.

    
por 01.11.2010 / 10:30