Több fájlt akarok keresni a find
használatával, és mindegyiket törölni akarom a -exec
használatával. Megpróbáltam
find ./ -type f -name fileA -o -name fileB -exec rm {} \;
, de úgy tűnik, hogy ez csak a “fileB” fájlokat távolítja el, nem pedig a fileAs fájlokat.
Megjegyzések
Válasz
-o
a műveletre is vonatkozik, ezért csoportosítania kell a dolgokat:
find ./ -type f \( -name fileA -o -name fileB \) -exec rm {} \;
BTW, a megvalósítás a -delete
-t is támogathatja:
find ./ -type f \( -name fileA -o -name fileB \) -delete
megjegyzés
- és ha nem ' t, akkor valószínűleg támogatja a
-exec rm {} +
Válasz
Másik alternatíva:
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
Vagy ha lehetséges, elkapja ezeket vicces karakterű fájlok:
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
Megjegyzések
- Tetszik, hogy csaknem egy évvel később tértél vissza, hogy hozzáadjam a fájlnevekről szóló megjegyzést, hogy ' s dedikáció. : D
rm
(ez ' megpróbálja, de nem sikerül ).