Wie verhindere ich, dass nur Dateien in dem Verzeichnis gelöscht werden, in dem ich mich befinde?

Wie verhindere ich, dass nur Dateien in dem Verzeichnis gelöscht werden, in dem ich mich befinde?

Ich möchte Dateien löschen, die älter als 30 Tage sind und sich in einem Verzeichnis befinden, jedoch nicht in den Verzeichnissen unterhalb des Verzeichnisses, in dem ich mich befinde.

Antwort1

So listen Sie die Dateien auf, bevor Sie sie löschen:

find . -maxdepth 1 -mtime +30 -type f -ls

So löschen Sie die Dateien:

find . -maxdepth 1 -mtime +30 -type f -exec rm {} +

mit

  • .Angabe des aktuellen Verzeichnisses
  • -maxdepth 1höchstens eine Verzeichnisebene nach unten
  • -mtime +30nur Dateien, deren letzte Änderung > 30 Tage zurückliegt
  • -type fnur normale Dateien

Antwort2

Die zsh-Shell hatspezielle Platzhaltererweiterungsfunktionendas würde helfen.

  • Listet Dateien auf, die älter als 30 Tage im aktuellen Verzeichnis sind:ls -d -- *(.m+30)

  • Dateien, die älter als 30 Tage sind, im aktuellen Verzeichnis entfernen:rm -- *(.m+30)

Die zsh-Syntax *(.m+30)ist ein Platzhalter, der bedeutet:

  • *-- beliebiger Dateiname
  • ( ... )– mit der Einschränkung …
  • .- eine normale Datei (kein Verzeichnis usw.)
  • m+30-- die Änderungszeit liegt mehr als 30 Tage zurück

verwandte Informationen