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

  • De asemenea, va elimina orice directoare numite " fișierB ", de altfel.
  • @Wildcard Nu cu rm direct (va ncearcă să nu reușească, dar ' ).
  • @Kusalananda, ah, corect.

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *