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

  • Spowoduje również usunięcie wszystkich katalogów o nazwie " plikB ", nawiasem mówiąc.
  • @Wildcard Nie z prostym rm (it ' spróbuję, ale nie uda się) ).
  • @Kusalananda, ah, right.

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *