Ich möchte mit find nach mehreren Dateien suchen und alle löschen Verwenden von -exec. Ich habe versucht,

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

, aber dies scheint Dateien „fileB“ nur nicht fileAs zu entfernen.

Kommentare

  • Außerdem werden alle Verzeichnisse mit dem Namen " fileB übrigens.
  • @Wildcard Nicht mit gerade rm (es ' wird versuchen, aber fehlschlagen ).
  • @Kusalananda, ah, richtig.

Antwort

-o gilt auch für die Aktion, daher müssen Sie folgende Dinge gruppieren:

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

Übrigens, Ihre find -Implementierung unterstützt möglicherweise auch -delete:

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

Kommentare

  • und wenn dies nicht ' t ist, unterstützt es wahrscheinlich -exec rm {} +

Antwort

Eine weitere Alternative:

 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 

Oder wenn möglich, um diese zu fangen Dateien mit lustigen Zeichen:

 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 

Kommentare

  • Ich mag es, wie Sie fast ein Jahr später zurückkamen, nur um den Hinweis zu Dateinamen hinzuzufügen, die ' s Widmung. : D

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.