Ik wil naar meerdere bestanden zoeken met find en ze allemaal verwijderen met -exec. Ik heb geprobeerd

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

maar dit lijkt bestanden “fileB” te verwijderen, alleen niet fileAs.

Reacties

  • Het verwijdert ook alle mappen met de naam " fileB ", overigens.
  • @Wildcard Niet met recht rm (het ' zal proberen, maar falen ).
  • @Kusalananda, ah, juist.

Antwoord

-o is ook van toepassing op de actie, daarom moet u dingen groeperen:

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

Tussen haakjes, uw find implementatie ondersteunt mogelijk ook -delete:

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

Reacties

  • en als het niet ' t doet, ondersteunt het waarschijnlijk -exec rm {} +

Answer

Een ander alternatief:

 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 

Of indien mogelijk om die te vangen bestanden met grappige karakters:

 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 

Reacties

  • Ik vind het leuk dat je bijna een jaar later terugkwam, alleen om de opmerking over bestandsnamen toe te voegen, die ' s toewijding. : D

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *