Wie kann ich die Größe aller Dateien und aller Dateien in ihren Unterverzeichnissen mit dem Befehl du ermitteln?
Ich versuche den folgenden Befehl, um die Größe aller Dateien (und Dateien in Unterverzeichnissen) zu erhalten
find . -type f | du -a
Damit werden aber auch die Ordnergrößen ausgedruckt. Wie kann ich eine Liste der Größen aller Dateien und Dateien in Unterverzeichnissen erhalten? Ich habe auch versucht, exec flag
aber ich bin nicht sicher, wie ich die Ausgabe in einen anderen Befehl umleiten soll, nachdem er die Ergebnisse von find
into ausgeführt hat du
.
Das Betriebssystem ist AIX 6.1 mit ksh-Shell.
find -print0
oder andere GNU-Funktionen haben. Falls vorhanden, ersetzt\;
mit\+
in weniger Anrufungen führendu
und damit eine bessere Leistung.+
Option finden. Ist das eine Option fürdu
oder fürfind
? Und warum kommt es zu weniger Anrufen?find
. Es gibtexec
den Befehl (in unserem Falldu
) nur einmal an, wobei alle Ergebnissefind
als aufeinanderfolgende Argumente für den Befehl angegeben werden.du -f --threshold=1G
Wenn Sie GNU-Dienstprogramme haben, versuchen Sie es
quelle
man du
afiles
oderfrom
flag nicht aufgelistet werden.du -ch
, um eine Gesamtsumme der übereinstimmenden Dateien zu erhalten:find . -name 'blah blah.*' -print0 | du --files0-from=- -ch
Ich benutze im Allgemeinen:
Xargs ruft normalerweise den Befehl auf, auch wenn keine Argumente übergeben wurden.
xargs du </dev/null
wird noch angerufen werden,xargs -r du </dev/null
du nicht anrufen. Das-0
Argument sucht nach nullterminierten Zeichenfolgen anstelle von Zeilenumbrüchen.Dann addiere ich normalerweise
| awk '{sum+=$1} END {print sum}'
am Ende, um die Summe zu erhalten.quelle
then I usually add
ist Gold wert :-)Hier ist eine Version mit langen Parameternamen und menschlicher Sortierung.
Ich sah auch keinen Grund
-a/--all
, weitergegeben zu werdendu
.quelle
bestimmte Dateien im aktuellen Verzeichnis
du -ch files*
ist kürzer und funktioniert bei mir
du -sh .
für aktuelles Verzeichnis und alle Dateien in sub
du (GNU coreutils) 8.30
quelle
du -ch files*
? Angenommen , das aktuelle Verzeichnis enthältant
,apple
,banana
,bat
,cat
,corn
,date
, unddog
, wo die Tiernamen sind Verzeichnisse und das Obst / Gemüse Namen sind Dateien - welcher Befehl würden Sie nur die Dateien erhalten benutzen? Oder hast du das nicht gemeint? (2)du -sh .
meldet nur eine Gesamtsumme von allem in und unter dem aktuellen Verzeichnis und überhaupt nicht die Dateien selbst. Dies ist so ziemlich das genaue Gegenteil von dem, was die Frage verlangt.