Wie kann ich alle Dateien/Verzeichnisse, auch die versteckten (deren Name mit einem Punkt beginnt), in einem Durchgang nach Größe sortiert ausgeben ?
VonGröße eines Verzeichnisses, ich meine die Summe aller Dateigrößen im Verzeichnis und seinem gesamten Unterverzeichnisbaum.
Der Unterschied zuWie kann ich die Ausgabe du -h
nach Größe sortieren?ist, dass ich eine Ausgabe anfordere, die Folgendes beinhaltet:alleDateien und Verzeichnisse im aktuellen Verzeichnis –ob versteckt oder nicht.
Verweise
- Wie kann ich die Ausgabe
du -h
nach Größe sortieren? - Wie finde ich die größten Verzeichnisse in Unix/Ubuntu?
- So
du
zeigen Sie Dateien an, die einen bestimmten Größenschwellenwert überschreiten - Wie sortieren Sie
du
die Ausgabe nach Größe? - So listen Sie alle Dateien nach Größe sortiert auf
- Der
du
Befehl analysiert keine versteckten Verzeichnisse - So erhalten Sie die zusammengefassten Größen von Verzeichnissen
- Anzeige der Größe jedes Unterverzeichnisses in einem Listenformat
- Eine schnelle Möglichkeit, die Größe jedes Unterverzeichnisses anzuzeigen
Antwort1
Wie kann ich alle Dateien/Verzeichnisse, auch die versteckten, nach Größe sortiert ausgeben?
Verwenden Sie diedu
(Festplattennutzung)Befehl, der Teil vonGNU-Kerndienstprogramme: 1
du -hs -- * .[^.]* | sort -h
Der.[^.]*
regulären Ausdruckstellt sicher, dass versteckte Dateien und Verzeichnisse eingeschlossen werden.
Auflistennur verstecktDateien und Verzeichnisse, sortiert nach aufsteigender Größe:
du -hs -- .[^.]* | sort -h
Aufführennur Verzeichnisse– ob versteckt oder nicht – in aufsteigender Größe sortiert:
du -hs -- */ .[^.]*/ | sort -h
Nur auflistenDateienim aktuellen Verzeichnis
AufführenalleDateien, sortiert nach zunehmender Größe: 2
ls -AhlS | grep '^-' | tac
Nur auflistenverstecktDateien, sortiert nach aufsteigender Größe:
ls -hldS .* | grep '^-' | tac
Nur auflistenregulär(nicht versteckte) Dateien, nach aufsteigender Größe sortiert:
ls -lS | grep '^-' | tac
Auflisten von Dateienrekursiv– im gesamten Unterverzeichnisbaum
Dies wird in der Frage nicht abgefragt, aber manchmal möchten Sie möglicherweise alle Dateien im Unterverzeichnisbaum (einschließlich des aktuellen Verzeichnisses) nach Größe sortiert auflisten. 3
du -ah | sort -h
Die Ausgabe ist eine (möglicherweise erschreckend lange) Liste von Unterverzeichnissen und Dateien. Um die Liste nur auf Dateien zu beschränken, müssen Sie wissen, welche Dateierweiterung die größten Dateien haben (indem Sie sich die Ausgabe des obigen Befehls ansehen).
du -ah | sort -h | grep .<file-extension>
Hier sollten Sie <file-extension>
durch zip
, png
, jpg
oder die Dateierweiterung der größten Dateien ersetzen.
Beispiele:
du -ah | sort -h | grep .zip
du -ah | sort -h | grep .png
Verweise
- Die
du
Linux-Manpage (Festplattennutzung) - GNU-Kerndienstprogramme
- In regulären Ausdrücken
^
bedeutet Caret ()nicht - Kommentar zum Einbinden sowohl versteckter als auch nicht versteckter Dateien
- Utility-Syntax | Richtlinie 10,Ende der Optionen
- Der
ncdu
Datenträgernutzungsanalysator - Antwort empfehlen
ncdu
- Die
ls
Linux-Manpage (Verzeichnisinhalt auflisten) - So kehren Sie die Ausgabe in der Befehlszeile um
- So zeigen Sie nur Ordner mit einer Größe von über 1 GB an
- So listen Sie alle Dateien nach Größe sortiert auf
1
Ich verdanke meine Lösung dankbardieser Kommentar. Das --
Argumentmarkiert das Ende der Optionen. Bei sehr großen Dateien/Ordnern kann
der Befehl quälend langsam sein. Erwägen Sie die Verwendung desdu
ncdu
Befehl stattdessen.
Um es auf einem Debian-Derivat, einschließlich Ubuntu, zu installieren, führen Sie Folgendes aus: sudo apt install -y ncdu
.
Auf Arch Linux, einschließlich MSYS2, führen Sie Folgendes aus: yes | pacman -Syu ncdu
.
Um es zu verwenden, geben Sie ein ncdu
und drücken Sie ↵.
2
Die -h
Flagge vonls
gibt die Dateigrößen in einem für Menschen lesbaren Format aus.
Das -S
Flag sortiert die Ausgabe in der ReihenfolgeabnehmendGröße.
Die Pipe | grep '^-'
schließt Verzeichnisse und symbolische Links aus.
Die Pipe| tac
kehrt die Ausgabe um.
3 Dies ist eher von Interesse, wenn die Größe des aktuellen Verzeichnisses einige Megabyte und nicht einige Gigabyte beträgt.