it-swarm-pt.tech

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

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.

27
oadams

find . -name "filename" -delete

40
tante

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 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.

12
Wayne