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