
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 -maxdepth
nachdem, 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 -f
eine Option verwenden oder eine Fehlerausgabe an senden, /dev/null
aber diese ist für eine Methode bereits fehlerhaft:
rm '/path/to/directory/~$'*