Suchen Sie nach Verzeichnissen, die größer als X sind, und verschieben Sie sie an ein neues Ziel.

Suchen Sie nach Verzeichnissen, die größer als X sind, und verschieben Sie sie an ein neues Ziel.

Ich möchte alle Ordner (max-depth=1), die größer als 100 MB sind, an ein neues Ziel verschieben. Das hier ist, was ich bisher erreicht habe:

du --max-depth=1 -h --threshold=100MB | head -n-1 | awk '{print $2}' | xargs -p -0 -I {} mv {} ../new_location

Aus irgendeinem Grund wird mein Ergebnis nicht an das neue Ziel verschoben. Ich sehe nur eine lange Liste aller Ordner, die ich verschieben möchte, anstatt dass sie verschoben werden.

Antwort1

Die -0Option „to“ xargsbedeutet, dass die Eingabe eingehtNull-getrennt, nicht durch Zeilenumbrüche getrennt. awkSetzen Sie in Ihrem Skript den Ausgabedatensatztrenner ORSauf ein Nullzeichen \0:

du --max-depth=1 -h --threshold=100MB | head -n-1 | awk 'BEGIN {ORS="\0"} {print $2}' | xargs -p -0 -I {} mv {} ../new_location

verwandte Informationen