Jeg vil søke etter flere filer ved hjelp av find og slette dem alle ved hjelp av -exec. Jeg prøvde

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

men dette ser ut til å fjerne filer «fileB» bare ikke fileAs.

Kommentarer

  • Det vil også fjerne eventuelle kataloger som heter " fileB ", forresten.
  • @ Wildcard Ikke med rett rm (det ' vil prøve, men mislykkes ).
  • @Kusalananda, ah, høyre.

Svar

-o gjelder også for handlingen, derfor må du gruppere ting:

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

BTW, din find implementering kan også støtte -delete:

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

Kommentarer

  • og hvis den ikke ' t, støtter den sannsynligvis -exec rm {} +

Svar

Et annet 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 

Eller hvis mulig å fange dem filer med morsomme tegn:

 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 

Kommentarer

  • Jeg liker hvordan du kom tilbake nesten et år senere bare for å legge til notatet om filnavn, at ' s dedikasjon. : D

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *