Thread find - erst zip, dann delete (8 answers)
Opened by Astralkeks at 2013-10-09 17:33

murphy
 2013-10-09 18:14
#171100 #171100
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Zum einen könntest Du find anweisen, jede Datei einzeln dem ZIP-Archiv hinzuzufügen und dann zu löschen:
Code (shell): (dl )
find -type f -mmin +5 -exec zip /path/name.zip '{}' ';' -delete


Zum anderen könntest Du die Liste der Dateien zwischenspeichern, dann alle archivieren und anschließend alle löschen:
Code (shell): (dl )
1
2
3
4
5
FILES="$(mktemp files.XXXXXXXXXX)"
find -type f -mmin +5 >"$FILES"
zip -@ /path/name.zip <"$FILES"
xargs -d'\n' -- rm -f -- <"$FILES"
rm "$FILES"


Ergänzung: Falls die Gefahr besteht, dass irgendein Schlaumeier Dateien mit einem Zeilenumbruch im Namen anlegt, müsste man im zweiten Fall weitere Vorkehrungen treffen, damit zip und xargs auf den richtigen Dateien operieren. Aber dieses Problem hat Deine bestehende Lösung ja auch schon.

Edit: Verbesserte Sicherheit der Argumente für rm

Editiert von murphy: Verbesserte Sicherheit der Argumente für rm
Last edited: 2013-10-09 18:36:29 +0200 (CEST)
When C++ is your hammer, every problem looks like your thumb.

View full thread find - erst zip, dann delete