Jag vill söka efter flera filer med find
och ta bort dem alla med -exec
. Jag försökte
find ./ -type f -name fileA -o -name fileB -exec rm {} \;
men detta verkar ta bort filer ”fileB” bara inte fileAs.
Kommentarer
Svar
-o
gäller också för åtgärden, därför måste du gruppera saker:
find ./ -type f \( -name fileA -o -name fileB \) -exec rm {} \;
BTW, din find
-implementering kan också stödja -delete
:
find ./ -type f \( -name fileA -o -name fileB \) -delete
Kommentarer
-exec rm {} +
Svar
Ett annat alternativ:
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
Eller om möjligt att fånga dem filer med roliga karaktärer:
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
Kommentarer
- Jag gillar hur du kom tillbaka nästan ett år senare bara för att lägga till anteckningen om filnamn, det ' s engagemang. : D
rm
(det ' försöker men misslyckas ).