Vreau să caut mai multe fișiere folosind find
și să le șterg pe toate folosind -exec
. Am încercat
find ./ -type f -name fileA -o -name fileB -exec rm {} \;
dar acest lucru pare să elimine fișierele „fileB” doar nu fileAs.
Comentarii
Răspuns
-o
se aplică și acțiunii, de aceea trebuie să grupați lucrurile:
find ./ -type f \( -name fileA -o -name fileB \) -exec rm {} \;
BTW, ar putea suporta și -delete
:
find ./ -type f \( -name fileA -o -name fileB \) -delete
Comentarii
- și dacă nu ' t, probabil acceptă
-exec rm {} +
Răspuns
O altă alternativă:
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
Sau dacă este posibil să-i prinzi fișiere cu caractere amuzante:
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
Comentarii
- Îmi place cum te-ai întors aproape un an mai târziu, doar pentru a adăuga nota despre numele fișierelor, acea dedicație '. : D
rm
direct (va ncearcă să nu reușească, dar ' ).