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 1
höchstens eine Verzeichnisebene nach unten-mtime +30
nur Dateien, deren letzte Änderung > 30 Tage zurückliegt-type f
nur 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