Benötige ein Skript zum Löschen aller temporären Dateien, die mit ~$ beginnen

Benötige ein Skript zum Löschen aller temporären Dateien, die mit ~$ beginnen

Ein kürzlicher Scan auf unserem Dateiserver nach temporären Dateien mit~$an den Anfang des Namens angehängt, ergab fast 1.000 Ergebnisse.

Die „Letzte Änderung“-Daten dieser Dateien reichen bis ins Jahr 2003 zurück (sie sind also mittlerweile im Allgemeinen überflüssig und können problemlos gelöscht werden).

Ich brauche ein Skript, das alle Dateien erkennt und löscht, die mit „~$“ beginnen. Ich könnte es dann so planen, dass es einmal pro Woche auf dem Server ausgeführt wird, um diese temporären Dateien regelmäßig automatisch zu löschen.

Antwort1

Für ein bestimmtes Verzeichnis würde dies alle Dateien, deren Namen mit ~$ beginnen, rekursiv löschen:

find /path/to/directory -type f -name '~$*' -exec rm '{}' \;

Um es nur auf dieses bestimmte Verzeichnis und nicht auf seine Unterverzeichnisse zu beschränken, verwenden Sie maxdepth:

find /path/to/directory -maxdepth 1 -type f -name '~$*' -exec rm '{}' \;

Ändern Sie das Integralargument, je -maxdepthnachdem, welche Verzeichnisebene für die Suche nach Dateien vorgesehen ist.

Ein anderer, einfacherer Ansatz ist die Verwendung von Globs, aber das ist keine wirklich gute Idee, da versucht wird, Verzeichnisse zu berühren, die dem Muster entsprechen. Sie werden zwar trotzdem nicht gelöscht, aber Sie müssten sich mit der Fehlermeldung herumschlagen. Sie könnten -feine Option verwenden oder eine Fehlerausgabe an senden, /dev/nullaber diese ist für eine Methode bereits fehlerhaft:

rm '/path/to/directory/~$'*

verwandte Informationen