Desejo pesquisar vários arquivos usando find
e excluir todos eles usando -exec
. Eu tentei
find ./ -type f -name fileA -o -name fileB -exec rm {} \;
mas isso parece remover arquivos “fileB”, não fileAs.
Comentários
Resposta
-o
também se aplica à ação, portanto, você precisa agrupar coisas:
find ./ -type f \( -name fileA -o -name fileB \) -exec rm {} \;
A propósito, seu find
a implementação também pode oferecer suporte a -delete
:
find ./ -type f \( -name fileA -o -name fileB \) -delete
Comentários
- e se não ' t, provavelmente suporta
-exec rm {} +
Resposta
Outra alternativa:
WARNING: it is possible that due to funny characters in directory names it is possible that unintended files might be deleted. find ./ -type f \( -name fileA -o -name fileB \) -print | xargs rm -f
Ou, se possível, para pegá-los arquivos com caracteres engraçados:
NOTE: On some systems -print0 and -0 options are not available. But this would be the preferred and safer method) find ./ -type f \( -name fileA -o -name fileB \) -print0 | xargs -0 rm -f
Comentários
- Gosto de como você voltou quase um ano depois apenas para adicionar uma nota sobre os nomes dos arquivos, que ' é a dedicação. : D
rm
direto (ele ' tentarei, mas falharei ).