Haluan etsiä useita tiedostoja käyttämällä find ja poistaa ne kaikki käyttämällä -exec. Yritin

find ./ -type f -name fileA -o -name fileB -exec rm {} \; 

, mutta tämä näyttää poistavan tiedostot ”fileB” vain ei fileAs.

Kommentit

  • Se poistaa myös kaikki hakemistot, nimeltään " fileB ", muuten.
  • @Wildcard Ei suoralla rm (se ' yritän, mutta epäonnistuu ).
  • @Kusalananda, ah, oikea.

Vastaa

-o koskee myös toimintoa, joten sinun on ryhmiteltävä asioita:

find ./ -type f \( -name fileA -o -name fileB \) -exec rm {} \; 

BTW, find toteutus saattaa myös tukea -delete:

find ./ -type f \( -name fileA -o -name fileB \) -delete 

kommentteja

  • ja jos se ei ' t, se todennäköisesti tukee -exec rm {} +

Vastaa

Toinen vaihtoehto:

 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 

Tai jos mahdollista, ota ne kiinni tiedostot, joissa on hauskoja merkkejä:

 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 

kommentit

  • Pidän siitä, kuinka palasit melkein vuotta myöhemmin vain lisätäksesi tiedostojen nimiä koskevan huomautuksen, että ' omistautui. : D

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *