Chcę wyszukać wiele plików za pomocą find
i usunąć je wszystkie używając -exec
. Próbowałem
find ./ -type f -name fileA -o -name fileB -exec rm {} \;
, ale wydaje się, że usuwa to tylko pliki „fileB”, a nie plikAs.
Komentarze
Odpowiedź
-o
dotyczy również akcji, dlatego musisz pogrupować rzeczy:
find ./ -type f \( -name fileA -o -name fileB \) -exec rm {} \;
Przy okazji, twój może również obsługiwać -delete
:
find ./ -type f \( -name fileA -o -name fileB \) -delete
Komentarze
- i jeśli nie ' t, prawdopodobnie obsługuje
-exec rm {} +
Odpowiedź
Inna alternatywa:
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
Lub, jeśli to możliwe, złap je pliki ze śmiesznymi znakami:
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
Komentarze
- Podoba mi się, jak wróciłeś prawie rok później, aby dodać notatkę o nazwach plików, poświęconą '. : D
rm
(it ' spróbuję, ale nie uda się) ).