Übereinstimmende Verzeichnisse in allen Unterverzeichnissen löschen

Übereinstimmende Verzeichnisse in allen Unterverzeichnissen löschen

Wie kann ich run-*.achillesunter Linux alle Verzeichnisse in allen meinen Unterverzeichnissen entfernen?

Ich habe es versucht find /path -name run-*.achilles -type f -delete, aber es funktioniert nicht.

Antwort1

Hier gibt es mehrere Probleme:

  1. Sie sollten Anführungszeichen setzen *, um Shell-Globbing zu verhindern.
  2. -type fsagt find, dass Sie Dateien möchten.
  3. find -deletelöscht keine nicht leeren Verzeichnisse.Siehe diese FrageAngepasste Lösung aus einer der dortigen Antworten:

    find /path -path '*/run-*.achilles/*' -delete
    find /path -type d -name 'run-*.achilles' -empty -delete
    

Es ist nicht perfekt, die erste Zeile wird passen .../run-a/b.achilles/.... Denke ich. Dieser Befehl sollte besser passen:

find /path -type d -name 'run-*.achilles' -exec rm -rf {} +

Es verwendet rm -rf, gehen Sie also vorsichtig damit um.

verwandte Informationen