Holen Sie sich die Find-Ausgabe, um Dateien später zu löschen

Holen Sie sich die Find-Ausgabe, um Dateien später zu löschen

Ich möchte die Ergebnisse aus diesem Befehl übernehmen:

find . -type f -size +200M -exec ls -lh {} \;

Speichern Sie den Inhalt in einer Variablen irgendeiner Art und löschen Sie dann die gefundenen Dateien.

Wie kann ich das machen?

Antwort1

Sie müssen die Ergebnisse nicht nur in der Variablen speichern, findum die Dateien entfernen zu können (es sei denn, Sie haben spezielle Anforderungen, die Sie nicht erwähnt haben), da findspezielle -deleteParameter bereitgestellt werden, die das für Sie erledigen:

find . -type f -size +200M -print -delete

AlsDas Parsen der lsBefehlsausgabe wird nicht empfohlen.

Wenn Sie die von zurückgegebenen Dateien wirklich analysieren möchten find, müssen Sie etwa Folgendes tun:

find . -type f -size +200M -print0 | xargs -0 rm -v

Da Sie keine Shell-Variablen mit Nullzeichen behalten können und Sie das Skript nicht bei Leerzeichen unterbrechen möchten (was dazu führen kann,Riesenwanzen), könnte der Workaround darin bestehen, die Liste in der temporären Datei zu speichern oder die Daten zu serialisieren (z. B. base64).

verwandte Informationen