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
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
rm
(se ' yritän, mutta epäonnistuu ).