Chci vyhledat více souborů pomocí find
a všechny smazat pomocí -exec
. Snažil jsem se
find ./ -type f -name fileA -o -name fileB -exec rm {} \;
, ale zdá se, že to odstraní soubory „fileB“ pouze ne fileAs.
Komentáře
Odpověď
-o
platí také pro akci, proto musíte věci seskupit:
find ./ -type f \( -name fileA -o -name fileB \) -exec rm {} \;
BTW, váš find
Implementace může také podporovat -delete
:
find ./ -type f \( -name fileA -o -name fileB \) -delete
Komentáře
- a pokud ne ' t, pravděpodobně podporuje
-exec rm {} +
Odpověď
Další 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
Nebo je-li to možné, chytit soubory s legračními znaky:
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
Komentáře
- Líbí se mi, jak jste se vrátili téměř o rok později, jen abych přidal poznámku o jménech souborů, ' s věnování. : D
rm
(' zkusím, ale neuspěju ).