Schnelle Möglichkeit, die Größe jedes Unterverzeichnisses in einem Verzeichnis anzuzeigen

9

Ich möchte schnell überprüfen, welche Verzeichnisse den meisten Speicherplatz beanspruchen.

Ich habe es versucht, du -sh subdiraber bei größeren Verzeichnissen dauerte es mehr als 20 Sekunden.

Ich bin nicht sicher, wie ich mit dieser Methode die Größe aller Unterverzeichnisse im Home-Verzeichnis gleichzeitig anzeigen soll, aber ich befürchte, dass es Minuten dauern könnte ...

Gibt es einen schnellen Weg, dies zu tun?

Ich muss nicht die Größe der Dateien anzeigen, sondern nur Verzeichnisse.

stacko
quelle
Um herauszufinden , interaktiv , was den meisten Platz nimmt, könnte man verwendenncdu
JFS

Antworten:

12

Beispielverzeichnis

$ ls -aF
./  ../  .asd/  folder1/  folder2/  list  t1  t2  xyz/

So finden Sie Größen nur für Ordner, ausgenommen versteckte Ordner:

$ find -type d -name '[!.]*' -exec du -sh {} + 
4.0K    ./folder1
4.0K    ./folder2
8.0K    ./xyz

Wenn Sie am Ende auch eine Summe benötigen:

$ find -type d -name '[!.]*' -exec du -ch {} + 
4.0K    ./folder1
4.0K    ./folder2
8.0K    ./xyz
16K total

So sortieren Sie die Ergebnisse:

$ find -type d -name '[!.]*' -exec du -sh {} + | sort -h
4.0K    ./folder1
4.0K    ./folder2
8.0K    ./xyz

So kehren Sie die Sortierreihenfolge um:

$ find -type d -name '[!.]*' -exec du -sh {} + | sort -hr
8.0K    ./xyz
4.0K    ./folder2
4.0K    ./folder1

Wenn Sie auch versteckte Verzeichnisse benötigen, entfernen -name '[!.]*'Sie den Befehl find. Ich kenne keinen anderen Befehl, um die Größe von Ordnern zu ermitteln, die schneller ist als du. Verwenden Sie dffürfile system disk space usage

Verwenden Sie find -maxdepth 1 -type d -name '[!.]*' -exec du -sh {} +diese Option , um zu vermeiden, dass Unterordner angezeigt werden

Sundeep
quelle
1
Dies ist eine gute Antwort und kann leicht angepasst werden, um nur Ordner von einem bestimmten Benutzer anzuzeigen, indem Sie -user Benutzername
rafaelvalle
Warum sollte $ find -type d -name '[!.]*' -exec du -sh {} +schnell sein als nur du -sh subdir? - Ist es am Ende nicht der gleiche Befehl?
Framester
1
@Framester sorry , wenn das Ihr nehmen von der Antwort entfernt .. habe ich nur den Einsatz von illustrierten find+duals OP gefragt display the size of all the subdirectories... ich in der Antwort erwähnt , dass ich weiß nicht , ob es ein Befehl gibt , die als schneller ist du.. Verwendung findzu beschränken Welche Art von Dateien / Verzeichnissen möchten Sie gebendu
Sundeep
1
+1 für sort -h- das ist eine großartige Flagge
Spinup
5

Paket verwenden ncdu. Sie können es installieren durch sudo apt-get install ncdu.
Auf dem Server können Sie es mit Optionen verwenden ncdu -q -x(Quiet Mode und Omit Mounted Directories).

Ncdu vs du / df

Die Schnittstelle von ncdu wird mit ncurses erstellt und ist interaktiv. Ncdu unterscheidet sich von df oder du. Ncdu erledigt nur die eine Aufgabe, den von einem Verzeichnis verwendeten Speicherplatz zu melden und einen Drilldown durchzuführen. Andererseits meldet der Befehl df Speicherplatz, der von verschiedenen Speichergeräten verwendet wird.

Daher ist ncdu ein leistungsstarkes Tool zum Überwachen, Überprüfen und Analysieren der Speicherplatznutzung auf Ihrem Linux-System

Ankit Balyan
quelle
1
Das scheint nützlich zu sein, aber ist es schneller als du?
Spinup
4

Alle Ordner belegen den gleichen Speicherplatz, nämlich 4096 Byte. Sie möchten nicht die Größe der Ordner wissen, sondern die Größe der darin enthaltenen Ordner. Und das erfordert Zählen, was wiederum Zeit erfordert.

duzählt standardmäßig die Verzeichnisgrößen. Also, um die Größen dafür zu bekommen:

cd && du

Oder

du ~

Siehe man dufür weitere Optionen.


quelle
1

Verwenden Sie den folgenden Befehl, um schnell die Top 10 Verzeichnisse entsprechend der im System belegten Größe anzuzeigen:

du -hsx / * | sort -rh | Kopf -10

Ausgabe z

[root@x ~]# du -hxs /* | sort -rh | head -10

10G     /mnt
5.4G    /usr
1.5G    /var
418M    /lib
274M    /opt
224M    /root
55M     /boot
36M     /home
30M     /lib64
16M     /sbin
Partha Pratim Sarkar
quelle