Jag vill söka efter flera filer med find och ta bort dem alla med -exec. Jag försökte

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

men detta verkar ta bort filer ”fileB” bara inte fileAs.

Kommentarer

  • Det tar också bort alla kataloger som heter " fileB ", förresten.
  • @ Wildcard Inte med rak rm (det ' försöker men misslyckas ).
  • @Kusalananda, ah, höger.

Svar

-o gäller också för åtgärden, därför måste du gruppera saker:

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

BTW, din find -implementering kan också stödja -delete:

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

Kommentarer

  • och om den inte ' t, stöder den förmodligen -exec rm {} +
  • Svar

    Ett annat 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 om möjligt att fånga dem filer med roliga karaktärer:

     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

    • Jag gillar hur du kom tillbaka nästan ett år senare bara för att lägga till anteckningen om filnamn, det ' s engagemang. : D

    Lämna ett svar

    Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *