Ich habe Hunderte von PDF- und HTML-Dateien in einem Verzeichnis. Und ich möchte die Gesamtgröße der PDF-Dateien wissen.
Auf Befehl du -ch /var/foo
kann ich die Gesamtgröße der Datei sehen, aber ich brauche nur die letzte Zeile, die Gesamtgröße.
Wenn das Verzeichnis nur PDF-Dateien enthält, kann ich die -s
Option verwenden, aber die Option kann diesmal nicht verwendet werden.
Wie kann ich nur die Gesamtgröße eines bestimmten Dateityps ermitteln?
shell
wildcards
disk-usage
Eisensand
quelle
quelle
du -sh /foo/*.pdf
?du -ch /var/foo/*.pdf | tail -n 1
Antworten:
Mit GNU
du
(dh unter nicht eingebettetem Linux oder Cygwin) können Sie die--exclude
Option verwenden, um die Dateien auszuschließen, die nicht übereinstimmen sollen.Wenn Sie
*.pdf
Dateien positiv abgleichen möchten , müssen Sie eine andere Methode zum Auflisten der Dateien verwenden unddu
mindestens eine Ausgabezeile pro Argument sowie eine Gesamtsumme mit der Option anzeigen-c
. Sie können rufentail
alle , aber die letzte Zeile zu entfernen, oder sed das Wort „total“ als auch zu entfernen. Verwenden Sie Platzhalter in der Shell, um die Dateien in diesem einen Verzeichnis aufzulisten.Wenn Sie auch Dateien in Unterverzeichnissen durchlaufen müssen, verwenden Sie
find
oder verwenden Sie ein**/
Muster, wenn Ihre Shell dies unterstützt.**/
Führen Sie in Bash zuerst ausshopt -s extglob
und beachten Sie, dass Bash-Versionen bis 4.2 symbolische Links zu Verzeichnissen durchlaufen. in zsh funktioniert dies sofort.Eine zusätzliche Komplikation mit dem Fund Version ist , dass , wenn es zu viele Dateien sind,
find
laufendu
mehr als einmal, unter der Befehlszeile Längengrenze zu halten. Bei der Platzhaltermethode wird in diesem Fall eine Fehlermeldung angezeigt ("Befehlszeilenlängenbeschränkung überschritten"). Der folgende Code setzt voraus, dass Sie keinen passenden Dateinamen haben, der eine neue Zeile enthält.quelle
--exclude='*.html'
dies/var/foo/dir.html/foo.pdf
nicht dazu führen würde, dass die Ausschlüsse auch die Verzeichnisüberquerung beeinflussen. Außerdem wird die Festplattennutzung von Verzeichnissen einschließlich sich/var/foo
selbst berücksichtigt.)Sie können die Dateien von der Shell erweitern lassen:
Wie Sie jedoch sehen können, zeigt dies die Dateigröße etwa 1000 Mal an, wie sie gerade erstellt wurde. Eine bessere Option ist die Verwendung der
-b
Option:Große Dateigrößen werden weiterhin in lesbarer Form angezeigt, z
173K
.quelle
du
Zeigt die Festplattennutzung jeder Datei an (auf den meisten Dateisystemen ist dies die Dateigröße, die auf das nächste Vielfache der Blockgröße aufgerundet wird). Mit der Option-b
,du
zeigt die Größe der einzelnen Dateien.