Frage Wie ermittle ich die Gesamtgröße eines Verzeichnisses (Ordners) über die Befehlszeile?


Gibt es einen einfachen Befehl, um die Gesamtgröße (Festplattennutzung) aller Dateien in einem Verzeichnis (Ordner) anzuzeigen?

Ich habe diese versucht und sie tun nicht, was ich will:

  • ls -l, die nur die Größe der einzelnen Dateien in einem Verzeichnis anzeigt, noch nicht
  • df -h, die nur den freien und belegten Speicherplatz auf meinen Festplatten anzeigt.

682
2017-08-05 18:20


Ursprung


Verbunden: Wie listet man rekursive Dateigrößen von Dateien und Verzeichnissen in einem Verzeichnis auf? - Peter Mortensen
Standortübergreifendes Duplikat: Wie erhalte ich die Größe eines Verzeichnisses in der Befehlszeile? - Peter Mortensen


Antworten:


Der Befehl du "fasst die Plattenbenutzung jeder Datei rekursiv für Verzeichnisse zusammen", z.

du -hs /path/to/directory
  • -h ist, die Nummern "für Menschen lesbar" zu erhalten, z. bekommen 140M Anstatt von 143260 (Größe in KBytes)
  • -s ist für die Zusammenfassung (sonst erhalten Sie nicht nur die Größe des Ordners sondern auch für alles im der Ordner separat)

Wie du es benutzt -h Sie können die menschenlesbaren Werte mit sortieren

du -sh | sort -h

Das -h Flagge an sort berücksichtigt Größenwerte, die vom Menschen gelesen werden können.


Wenn Sie vermeiden möchten, dass alle Dateien und Verzeichnisse rekursiv aufgelistet werden, können Sie die --max-depth Parameter, um zu begrenzen, wie viele Elemente angezeigt werden. Am häufigsten, --max-depth=1

du -sh --max-depth=1 /path/to/directory

1086
2017-08-05 18:27



Respekt für die extra Meile. :) - myusuf3
ich benutze du -sh oder DOOSH als eine Möglichkeit, sich daran zu erinnern (HINWEIS: Der Befehl ist der gleiche, nur die Organisation von Kommandozeilen-Flags für Speicherzwecke) - Marco Ceppi♦
Es gibt eine nützliche Option, um die - apparent-Größe zu nennen. Es kann verwendet werden, um die tatsächliche Größe einer Datei oder eines Verzeichnisses zu finden (im Gegensatz zu seinem Footprint auf der Platte), zB eine Textdatei mit nur 4 Zeichen belegt etwa 6 Bytes, wird aber immer noch ~ 4K aufnehmen ein regulärer du-sh Ausgang. Wenn Sie jedoch die Option --apparent-size übergeben, wird die Ausgabe 6 sein. Man du sagt: - apparent-size print scheinbare Größen, anstatt Datenträgerverwendung; Obwohl die scheinbare Größe normalerweise kleiner ist, kann sie aufgrund von Löchern in ('spärlichen') Dateien, interner Fragmentierung und indirekten Blöcken größer sein - Hopping Bunny
Dies funktioniert auch für OS X! Danke, ich war wirklich auf der Suche nach einer Möglichkeit, Dateien zu löschen, sowohl auf meinem lokalen Rechner als auch auf meinem Server, aber automatisierte Methoden schienen nicht zu funktionieren. Also bin ich gelaufen du -hs * und ging in das größte Verzeichnis und fand heraus, welche Dateien so groß waren ... Das ist so eine gute Methode, und der beste Teil ist, dass Sie nichts installieren müssen! Definitiv verdient meine Aufwertung - Dev
@ BandaMuhammadAlHelal Ich denke, es gibt zwei Gründe: Rundung (du hat etwas eigenartige Rundung, zeigt keine Dezimalstellen, wenn der Wert mehr als eine Ziffer in der gewählten Einheit hat, und die klassische 1024 vs. 1000 Präfix Problem. du hat eine Option -B (oder --block-size) um die Einheiten zu ändern, in denen Werte angezeigt werden, oder die Sie verwenden könnten -b Anstatt von -h um den "rohen" Wert in Bytes zu erhalten. - Marcel Stimberg


Vor kurzem habe ich ein großartiges, auf Ncurses basierendes interaktives Tool gefunden, das Ihnen schnell einen Überblick über die Verzeichnisgrößen gibt. Gesucht nach diesem Werkzeug seit Jahren.

  • Schnelles Aufrufen der Dateihierarchie
  • Sie können z. riesige temporäre Dateien aus dem Tool
  • extrem schnell

Betrachten Sie es als Baobab für die Befehlszeile:

apt-get install ncdu

139
2017-10-11 07:24



Das ist absolut fantastisch! Wie DaisyDisk, für OSX - subZero
Unglaubliches Werkzeug! - Ted
ncdu ist großartig! Nach der Installation tun Sie das einfach ncdu /. Sie werden sehr schnell die größten Dateien auf dem System finden. Drücken Sie auch h während in ncdus Konsolenschnittstelle. Es hat sehr nützliche Abkürzungen - vlad-ardelean
Tolles Werkzeug! Danke für die Köpfe hoch! - kstratis


Dies findet die Größe rekursiv und legt sie neben jedem Ordnernamen zusammen mit der Gesamtgröße unten im menschlichen Format fest

du -hsc *

43
2017-12-19 16:32





Genießen!

du foldername

Weitere Informationen zu diesem Befehl Hier 


14
2017-08-05 18:22





tree ist ein weiterer nützlicher Befehl für diesen Job:

Installieren Sie es einfach über sudo apt-get install tree und geben Sie Folgendes ein:

tree --du -h /path/to/directory
...
...

33.7M used in 0 directories, 25 files

Von Mann Baum:

-h    Print  the size of each file but in a more human readable way, e.g. appending a size letter for kilo‐
      bytes (K), megabytes (M), gigabytes (G), terabytes (T), petabytes (P) and exabytes (E).

--du  For each directory report its size as the accumulation of sizes of all its files and  sub-directories
      (and their files, and so on). The total amount of used space is also given in the final report (like
      the 'du -c' command.)

7
2018-01-27 12:37





Im Folgenden verwende ich die Gesamt-, Ordner- und Dateigröße:

$ du -sch /home/vivek/* | sort -rh

Einzelheiten

 ------------------------------------------------------------
   -c, --total
          produce a grand total
   -h, --human-readable
          print sizes in human readable format (e.g., 1K 234M 2G)
   -s, --summarize
          display only a total for each argument
 -------------------------------------------------------------
   -h, --human-numeric-sort
          compare human readable numbers (e.g., 2K 1G)
   -r, --reverse
          reverse the result of comparisons

Ausgabe

 70M    total
 69M    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/lib
992K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/results
292K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/target
 52K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/user-files

5
2017-10-06 14:05





Die Antworten haben es offensichtlich gemacht du ist das Werkzeug, um die Gesamtgröße eines Verzeichnisses zu finden. Es gibt jedoch ein paar Faktoren zu beachten:

  • Gelegentlich, du Die Ausgabe kann irreführend sein, da sie den vom Dateisystem zugewiesenen Speicherplatz meldet, der sich von der Summe der Größen der einzelnen Dateien unterscheiden kann. Normalerweise teilt das Dateisystem 4096 Bytes für eine Datei zu, selbst wenn Sie nur ein Zeichen darin gespeichert haben!

  • Ausgangsdifferenzen aufgrund der Potenz von 2 und der Potenz von 10 Einheiten. Das -h wechseln zu du Dividiert die Anzahl der Bytes durch 2 ^ 10 (1024), 2 ^ 20 (1048576) usw., um eine vom Menschen lesbare Ausgabe zu erhalten. Viele Menschen sind vielleicht gewöhnt, Potenzen von 10 zu sehen (z. B. 1K = 1000, 1M = 1000000) und sind vom Ergebnis überrascht.

Um die Gesamtsumme der Größen aller Dateien in einem Verzeichnis in Bytes zu ermitteln, führen Sie folgende Schritte aus:

find <dir> -ls | awk '{sum += $7} END {print sum}'

Beispiel:

$ du -s -B 1
255729664

$ find .  -ls | awk '{sum += $7} END {print sum}'
249008169

3
2018-02-04 18:56



Der Befehl find-ls-awk gibt einen falschen Wert für große Ordner zurück # 1. Für neuere awk können Sie hinzufügen --bignum oder -M ; Wenn das keine Option ist, benutze es find . -ls | tr -s ' '|cut -d' ' -f 7| paste -sd+ |bc  # 2. - goozez
Wenn 2er-Potenzen ein Problem sind, gibt es die --si Option: "wie -h, aber benutze Potenzen von 1000 nicht 1024" - muru


Verwenden Sie nur die Verzeichnisgröße in einem lesbaren Format:

du -hs directoryname

Dies ist wahrscheinlich nicht im richtigen Abschnitt, aber von der Kommandozeile aus könnten Sie versuchen:

ls -sh filename

Das -sist Größe und die -h ist für Menschen lesbar.

Benutzen -l aufzeigen ls Liste, wie unten:

ls -shl

1
2018-05-12 09:09





du /foldername ist der Standardbefehl, um die Größe eines Ordners zu kennen. Es empfiehlt sich, die Optionen zu finden, indem Sie die man-Seite lesen:

man du

Sie sollten die Manpage lesen (verfügbar online) bevor Sie den Befehl verwenden.


0
2017-12-05 09:17





Hier ist ein POSIX-Skript, das funktioniert mit:

  • Eine Datei
  • Dateien
  • Ein Verzeichnis
  • Verzeichnisse
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

Quelle


0
2018-03-27 11:48





Der beste ist meiner Meinung nach folgender:

du -h directory_name | tail -n1

Dadurch wird nur die Größe des Verzeichnisses angezeigt, an dem Sie interessiert sind, und es werden keine Größen von Verzeichnissen und Dateien in diesem Verzeichnis gedruckt.

Ich sollte hinzufügen, dass, wenn die Größe des Ordners groß ist, du länger dauert. Sie müssen geduldig sein, damit dieser Befehl funktioniert. Wie bei jedem anderen Unix-Befehl können Sie die Gesamtzeit für diesen Prozess mit Hilfe von ermitteln time vor diesem Befehl:

time du -h directory_name | tail -n1

-2
2017-12-19 06:35



du hat eine Option dafür: -s - muru