Jeg vil søge efter flere filer ved hjælp af find og slette dem alle ved hjælp af -exec. Jeg prøvede

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

men dette ser ud til at fjerne filer “fileB” kun ikke fileAs.

Kommentarer

  • Det fjerner også alle mapper, der hedder " fileB " i øvrigt.
  • @Wildcard Ikke med lige rm (det ' vil prøve men mislykkes ).
  • @Kusalananda, ah, højre.

Svar

-o gælder også for handlingen, derfor skal du gruppere ting:

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

BTW, dit find implementering understøtter muligvis også -delete:

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

Kommentarer

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

Svar

Et andet 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 det er muligt at fange dem filer med sjove 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 kan godt lide, hvordan du kom tilbage næsten et år senere bare for at tilføje noten om filnavne, at ' s dedikation. : D

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *