Wie protokolliere ich xargs -0 rm?

Wie protokolliere ich xargs -0 rm?

Ich muss einfach Dateien einer bestimmten Erweiterung rekursiv finden und löschen. Ich habe also eine Syntax, die die Dateien findet, entfernt und in weiterleitet xargs -0 rm, aber ich kann anscheinend kein Protokoll der entfernten Dateien erstellen.

Was ich bisher habe:

find /var/www/html -type f -regex ".*/.*\.(png|jpg)" -print0 |xargs -0 rm

Antwort1

rmist beim Löschen von Dateien normalerweise stumm. Wenn Sie ein Protokoll mit den gelöschten Dateien erstellen möchten, fügen Sie die -vOption hinzu. Ersetzen Sie daher:

xargs -0 rm

mit:

xargs -0 rm -v >log

Antwort2

Sie können es verwenden find, um Dateien zu löschen und gleichzeitig ihre Namen auf stdout zu schreiben:

find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -delete -print >logfile

Notiz:Die Reihenfolge -deleteder -printOptionen ist wichtig. Die zweite Option wird nur angewendet, wenn die erste Option „true“ zurückgibt, d. h. wenn die erste -deleteOption die Datei nicht löschen konnte, wird ihr Name nicht auf stdout ausgegeben. Wenn Sie die erste Option angeben -print, wird der Dateiname auf stdout ausgegeben, unabhängig davon, ob -deletedie Datei wirklich gelöscht werden konnte.

Anmerkung 2: Ich musste Klammern und vertikale Linien maskieren, damit der reguläre Ausdruck standardmäßig mit dem findUtil meines Systems funktioniert. Alternativ können Sie beispielsweise angeben, -regextypedass . Es lohnt sich jedenfalls, den Befehl zuerst ohne Option auszuprobieren, um zu prüfen, ob er Dateien richtig findet:posix-egrepfind-delete

find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -print

verwandte Informationen