Ich habe festgestellt, dass es nicht einfach ist, die Größe eines Verzeichnisses in Bash zu ermitteln.
Ich möchte, dass beim Tippen die ls -<some options>
gesamte Summe der Dateigröße des Verzeichnisses rekursiv und der Dateien gleichzeitig aufgelistet und nach Größenreihenfolge sortiert werden kann.
Ist das möglich?
du
ist die Antwort.du
Befehl @KeithThompson @KitHo schätzt die Speicherplatznutzung, sodass Sie ihn nicht verwenden können, wenn Sie die genaue Größe erhalten möchten.du
(zumindest die GNU-Coreutils-Version), besteht wahrscheinlich die Möglichkeit, die Informationen bereitzustellen.Antworten:
Navigieren Sie einfach zum Verzeichnis und führen Sie den folgenden Befehl aus:
ODER fügen Sie -h für lesbare Größen und -r hinzu, um zuerst größere Verzeichnisse / Dateien zu drucken.
quelle
du -h
erfordertsort -h
auch, um sicherzustellen, dass etwa981M
Sorten vorher sagen1.3G
; mitsort -n
nur den Zahlen würden berücksichtigt und sie wären falsch herum.-a
und verwenden müssen,--all
anstatt--max-depth=1
wie folgtdu -a -h --all | sort -h
sort -h
funktioniert nur unter GNUs Version / Linux, kein Glück mit BSD / OS X.Anscheinend ist die
--max-depth
Option nicht in der Mac OS X-Version desdu
Befehls enthalten. Sie können stattdessen Folgendes verwenden.du -h -d 1 | sort -n
quelle
(Dies zeigt keine versteckten (.dotfiles) Dateien an.)
Verwenden Sie
du -sm
für Mb-Einheiten usw. Ich benutze immerweil die gesamte Zeile (
-c
) aus offensichtlichen Gründen ganz unten landet :)PS:
quelle
du --max-depth=1|sort -n
oder auchfind . -mindepth 1 -maxdepth 1|xargs du -s|sort -n
zum Einfügen von Punktedateien.find . -mindepth 1 -maxdepth 1 -print0 | xargs -0 du -s | sort -n
wenn einige der gefundenen Pfade Leerzeichen enthalten könnten.sudo du -smch * | sort -h | tail
Befehl
Ausgabe
Erläuterung
du
zeigt "Festplattennutzung" anh
ist für "menschlich lesbar" (sowohl in der Art als auch in du)max-depth=0
meintdu
zeigt nicht die Größe von Unterordnern an (entfernen Sie diese, wenn Sie alle Größen jeder Datei in jedem Unter-, Unter-, ..., Ordner anzeigen möchten).r
ist für "umgekehrt" (größte Datei zuerst)ncdu
Als ich zu dieser Frage kam, wollte ich mein Dateisystem bereinigen. Das Kommandozeilen-Tool
ncdu
ist für diese Aufgabe viel besser geeignet.Installation unter Ubuntu:
Verwendung:
Geben Sie einfach
ncdu [path]
die Befehlszeile ein. Nach einigen Sekunden für die Analyse des Pfads sehen Sie ungefähr Folgendes:Löschen Sie das aktuell markierte Element mit dund beenden Sie mit CTRL+c
quelle
ls -S
sortiert nach Größe. Um auch die Größe anzuzeigen ,ls -lS
wird eine lange (-l
), sortiert nach size (-S
) -Anzeige angezeigt. Normalerweise füge ich auch hinzu-h
, um das Lesen zu erleichternls -lhS
.quelle
du
, anscheinend hat es jemand gepostet. @sehe: Hängt von Ihrer Definition von real ab - es zeigt den Speicherplatz an, den das Verzeichnis zum Speichern verwendet. (Es wird nur nicht auch die Größe der Untereinträge hinzugefügt.) Es ist keine Zufallszahl und es sind nicht immer 4 KB.Einfach und schnell:
* erfordert GNU Parallel .
quelle
Ich glaube, ich hätte herausgefunden, was Sie tun möchten. Dadurch erhalten Sie eine sortierte Liste aller Dateien und Verzeichnisse, sortiert nach Dateigröße und Größe des Inhalts in den Verzeichnissen.
quelle
du
eine Option ist. Sie erhalten nur ein ungefähres Ergebnis.[erweiterte Version]
Dies wird viel schneller und präziser sein als die unten stehende ursprüngliche Version und gibt die Summe aller Dateigrößen des aktuellen Verzeichnisses aus:
Der
stat -c %s
Befehl für eine Datei gibt ihre Größe in Byte zurück. Dertr
Befehl hier wird verwendet, umxargs
Befehlsbeschränkungen zu überwinden (anscheinend werden diexargs
Ergebnisse in mehrere Zeilen aufgeteilt, wodurch die Logik meines Befehls verletzt wird). Dahertr
wird darauf geachtet, den Zeilenvorschub durch ein+
Pluszeichen zu ersetzen .sed
hat das einzige Ziel, das letzte+
Vorzeichen aus der resultierenden Zeichenfolge zu entfernen , um Beschwerden beim letztenbc
Befehl (Basisrechner) zu vermeiden , der wie üblich die Mathematik ausführt.Leistung: Ich habe es in mehreren Verzeichnissen getestet und über 150.000 Dateien oben (die aktuelle Anzahl der Dateien meiner Fedora 15-Box), was meiner Meinung nach ein erstaunliches Ergebnis ist:
Nur für den Fall, dass Sie einen Vergleich mit dem
du -sb /
Befehl durchführen möchten , wird eine geschätzte Festplattennutzung in Bytes ausgegeben (-b
Option).Wie ich erwartet hatte, ist es etwas größer als meine Befehlsberechnung, weil die
du
Dienstprogramm den zugewiesenen Speicherplatz jeder Datei und nicht den tatsächlich verbrauchten Speicherplatz zurückgibt.[Erstversion]
Sie können den
du
Befehl nicht verwenden, wenn Sie die genaue Summengröße Ihres Ordners kennen müssen, weil (gemäß Manpage-Zitat)du
die Speicherplatznutzung geschätzt wird. Daher führt dies zu einem falschen Ergebnis, einer Annäherung (möglicherweise nahe an der Summengröße, aber höchstwahrscheinlich größer als die tatsächlich gesuchte Größe).Ich denke, es gibt verschiedene Möglichkeiten, Ihre Frage zu beantworten, aber dies ist meine:
Es findet alle Dateien unter. Verzeichnis (ändern. mit jedem Verzeichnis, das Sie möchten), auch versteckte Dateien sind enthalten und (mit
xargs
) gibt ihre Namen in einer einzigen Zeile aus, dann erstellt eine detaillierte Liste mitls -l
. Diese (manchmal) riesige Ausgabe wird in Richtung des Befehls cut geleitet, und nur das fünfte Feld (-f5
), bei dem es sich um die Dateigröße in Bytes handelt, wird verwendet und erneut weitergeleitet,xargs
wodurch wiederum eine einzelne Zeile von Größen erzeugt wird, die durch Leerzeichen getrennt sind. Nehmen Sie nun eine Sed-Magie vor, die jedes Leerzeichen durch ein Pluszeichen (+
) ersetzt und schließlichbc
(Basisrechner) die Mathematik durchführt.Möglicherweise ist eine zusätzliche Optimierung erforderlich, und Sie haben möglicherweise einen
ls
Befehl, der sich zu lange über die Liste der Argumente beschwert.quelle
Eine weitere einfache Lösung.
Das Ergebnis wird so aussehen
Wenn Sie "du -s" in "du -sh" ändern, wird die vom Menschen lesbare Größe angezeigt, aber wir können diese Methode nicht sortieren.
quelle
Sie können das Folgende verwenden, um Dateien nach Größe du -h | aufzulisten sort -hr | mehr oder du -h --max-Tiefe = 0 * | sort -hr | Mehr
quelle
Ich neige dazu, du auf einfache Weise zu benutzen.
Dies gibt mir eine Vorstellung davon, welche Verzeichnisse am meisten Speicherplatz beanspruchen. Ich kann dann später genauere Suchen durchführen.
quelle