Ist es möglich, unter ls
Unix die Gesamtgröße eines Unterverzeichnisses und seinen gesamten Inhalt aufzulisten, im Gegensatz zu der üblichen, 4K
dass (ich nehme an) nur die Verzeichnisdatei selbst ist?
total 12K
drwxrwxr-x 6 *** *** 4.0K 2009-06-19 10:10 branches
drwxrwxr-x 13 *** *** 4.0K 2009-06-19 10:52 tags
drwxrwxr-x 16 *** *** 4.0K 2009-06-19 10:02 trunk
Nachdem ich die Manpages durchsucht habe, bin ich leer.
alias ducks='du -cksh * | sort -hr | head -n 15'
Antworten:
Versuchen Sie etwas wie:
Kurzversion von:
Erläuterung:
du
: D isk U Salbei-s
: Zeigen Sie eine Zusammenfassung für jede angegebene Datei an. (Entspricht-d 0
)-h
: "Vom Menschen lesbare" Ausgabe. Verwenden Sie Einheitensuffixe: B yte, K ibibyte (KiB), M ebibyte (MiB), G ibibyte (GiB), T ebibyte (TiB) und P ebibyte (PiB). (BASE2)quelle
*(D)
versteckt Match ( d ot) Dateien neben den normalen Dateien. Wenn Sie bash verwenden, können Sie* .[!.]*
beide verwenden.du -sch * .[!.]* | sort -rh
ist großartig (zeigen Sie eine sortierte Ausgabe). Auf dem Mac:brew install coreutils
und danndu -sch * .[!.]* | gsort -rh
du -sk * | sort -n
sortiert die Ordner nach Größe. Hilfreich bei der Suche nach freiem Raum ..quelle
| tail -r
, um zuerst nach dem größten zu sortieren.sort -rn
sortiert die Dinge in umgekehrter numerischer Reihenfolge.sort -rn | head -n 10
zeigt nur die wenigen Top, wenn das von Interesse ist.sort -rh
funktioniert gut mit,du -cksh *
da es lesbare Einheiten sortiert.du -ksh | sort -rn
ist das gleiche wiedu -cksh | sort -rn
. Genauso wiedu -ksh
es das gleiche ist wiedu -cksh
.Dies wird in einem für Menschen lesbaren Format angezeigt.
quelle
sort -h
hier: gnu.org/software/coreutils/manual/... Es ist vor allem dort zum Sortieren103K
,102M
,1.1G
etc. Dies heutzutage auf vielen Systemen verfügbar sein sollten, aber nicht alle.du -sh * | sort -rh
du -sh $(ls -A) | sort -h
So listen Sie die größten Verzeichnisse aus dem aktuellen Verzeichnis in lesbarem Format auf:
du -sh * | sort -hr
Ein besserer Weg, um die Anzahl der Zeilen zu beschränken, kann sein
du -sh * | sort -hr | head -n10
Hier können Sie das
-n
Flag- Suffix erhöhen , um die Anzahl der aufgelisteten Zeilen zu beschränkenStichprobe:
Es macht es bequemer zu lesen :)
quelle
ls -lh
Verwenden Sie Folgendes, um es im Format anzuzeigen :Awk-Code erklärt:
Beispielausgabe:
quelle
--color=no
sort --key=5,5h
um 'von Menschen lesbare Einheiten' aus der fünften Spalte zu sortierensort: stray character in field spec: invalid field specification
5,5h'` zurück. Ich hasse Macs manchmal wirklich = \Der gewünschte Befehl lautet 'du -sk' du = "Festplattennutzung"
Das Flag -k gibt die Ausgabe in Kilobyte an und nicht die Standardeinstellung für Festplattensektoren (512-Byte-Blöcke).
Das Flag -s listet nur Dinge im Verzeichnis der obersten Ebene auf (dh standardmäßig das aktuelle Verzeichnis oder das in der Befehlszeile angegebene Verzeichnis). Es ist seltsam, dass du in dieser Hinsicht das entgegengesetzte Verhalten von ls hat. Standardmäßig gibt du rekursiv die Festplattennutzung jedes Unterverzeichnisses an. Im Gegensatz dazu gibt ls nur Listendateien im angegebenen Verzeichnis an. (ls -R gibt Ihnen rekursives Verhalten.)
quelle
Fügen Sie diese Shell-Funktionsdeklaration in Ihre Shell-Initialisierungsskripte ein:
Ich habe es genannt,
duls
weil es die Ausgabe von beidendu
undls
(in dieser Reihenfolge) zeigt:Erläuterung:
Das
paste
Dienstprogramm erstellt aus seiner Eingabe Spalten gemäß der von Ihnen angegebenen Spezifikation. Bei zwei Eingabedateien werden diese nebeneinander mit einer Registerkarte als Trennzeichen angezeigt.Wir geben ihm die Ausgabe von
du -hs -- "$@" | cut -f1
als erste Datei (Eingabestream wirklich) und die Ausgabe vonls -ld -- "$@"
als zweite Datei.In der Funktion
"$@"
wird die Liste aller Befehlszeilenargumente in doppelten Anführungszeichen ausgewertet. Es werden daher Globbing-Zeichen und Pfadnamen mit Leerzeichen usw. verstanden.Das Doppel minuse (
--
) signalisiert das Ende der Befehlszeilenoptionen zudu
undls
. Ohne dieseduls -l
würde das Sprichwort verwirrendu
und jede Optiondu
, diels
es nicht gibt, würde verwirrenls
(und die Optionen, die in beiden Dienstprogrammen vorhanden sind, bedeuten möglicherweise nicht dasselbe, und es wäre ein ziemliches Durcheinander).Die
cut
nachdu
einfach schneidet die erste Spalte des ausdu -hs
Ausgang (die Größen).Ich habe mich entschieden, die
du
Ausgabe links zu platzieren, sonst hätte ich eine wackelige rechte Spalte verwalten müssen (aufgrund der unterschiedlichen Länge der Dateinamen).Der Befehl akzeptiert keine Befehlszeilenflags.
Dies wurde sowohl
bash
in als auch in getestetksh93
. Es wird nicht funktionieren mit/bin/sh
.quelle
Ich benutze stattdessen immer
du -sk
(-k
Flag, das die Dateigröße in Kilobyte anzeigt).quelle
quelle
ncdu
Flüchedu
Mit diesem fantastischen CLI-Dienstprogramm können Sie die großen Dateien und Verzeichnisse einfach interaktiv finden.
Zum Beispiel machen wir aus dem Baum eines bekannten Projekts heraus :
Das Ergebnis ist:
Dann gebe ich unten und rechts auf meiner Tastatur ein, um in den
/drivers
Ordner zu gelangen, und ich sehe:ncdu
Berechnet die Dateigröße beim Start nur einmal rekursiv für den gesamten Baum, sodass sie effizient ist."Gesamtfestplattenauslastung" im Vergleich zu "Scheinbare Größe" ist analog zu
du
, und ich habe es unter folgendem erklärt: Warum unterscheidet sich die Ausgabe von "du" oft so stark von "du-b"?Projekthomepage: https://dev.yorhel.nl/ncdu
Verwandte Fragen:
Getestet in Ubuntu 16.04.
ncdu
nicht interaktive NutzungEine weitere coole Funktion von
ncdu
ist, dass Sie die Größen zuerst in einem JSON-Format sichern und später wiederverwenden können.So generieren Sie beispielsweise den Dateilauf:
und dann interaktiv untersuchen mit:
Dies ist sehr nützlich, wenn Sie mit einem sehr großen und langsamen Dateisystem wie NFS arbeiten.
Auf diese Weise können Sie zuerst nur einmal exportieren, was Stunden dauern kann, und dann die Dateien durchsuchen, beenden, erneut untersuchen usw.
Das Ausgabeformat ist nur JSON, daher ist es einfach, es auch mit anderen Programmen wiederzuverwenden, z.
zeigt eine einfache Verzeichnisbaumdatenstruktur:
Getestet in Ubuntu 18.04.
quelle
du -sch * im selben Verzeichnis.
quelle
Dies ist eine, die ich mag
Update : Das vorherige hat mir nicht gefallen, da es keine Dateien im aktuellen Verzeichnis anzeigt, sondern nur Verzeichnisse auflistet.
Beispielausgabe für
/var
on ubuntu:sudo du -hDaxd1 /var | sort -h | tail -n10
quelle
Dies sind alles großartige Vorschläge, aber der, den ich verwende, ist:
-ksh
Stellen Sie sicher, dass die Dateien und Ordner in einem für Menschen lesbaren Format und in Megabyte, Kilobyte usw. aufgelistet sind. Anschließend sortieren Sie sie numerisch und kehren die Sortierung um, sodass die größeren Dateien an erster Stelle stehen.Der einzige Nachteil dieses Befehls ist, dass der Computer nicht weiß, dass Gigabyte größer als Megabyte ist, sodass er nur nach Zahlen sortiert und häufig folgende Einträge gefunden werden:
Achten Sie nur darauf, das Gerät zu betrachten.
Dieser Befehl funktioniert auch auf dem Mac (wohingegen
sort -h
dies beispielsweise nicht der Fall ist).quelle
-h
Flagge aus demdu
Befehl entfernen , schneiden Sie diesen Nachteil-h
anstelle von-n
Sortierung verwenden.du hast eine andere nützliche Option: du
-S, --separate-dirs
erzählst du nicht enthält Größe Verzeichnisse - praktisch bei einigen Gelegenheiten.Beispiel 1 - zeigt nur die Dateigrößen in einem Verzeichnis:
Beispiel 2 - zeigt die Dateigrößen und Unterverzeichnisse im Verzeichnis:
quelle
du -sm * | sort -nr
Ausgabe nach Größe
quelle
Schauen Sie sich den
du
Befehl dafür anquelle
Nur eine Warnung, wenn Sie die Größe von Dateien vergleichen möchten. du erzeugt je nach Dateisystem, Blockgröße, .... unterschiedliche Ergebnisse.
Es kann vorkommen, dass die Größe der Dateien unterschiedlich ist, z. B. wenn Sie dasselbe Verzeichnis auf Ihrer lokalen Festplatte mit einem USB-Massenspeichergerät vergleichen. Ich verwende das folgende Skript, einschließlich ls, um die Verzeichnisgröße zusammenzufassen. Das Ergebnis sind Bytes, die alle Unterverzeichnisse berücksichtigen.
quelle
So zeigen Sie die Dateien und Unterverzeichnisse des aktuellen Verzeichnisses rekursiv an:
Um die Anzeige zu gleichen Größeninformationen aber ohne den Druck ihrer Unterverzeichnisse rekursiv (die eine riesige Liste sein kann), benutzen Sie einfach die --max eingehende Option:
quelle
Für eine Weile habe ich Nautilus (auf dem Gnome-Desktop unter RHEL 6.0) verwendet, um Dateien in meinem Home-Ordner zu löschen, anstatt den
rm
Befehl in bash zu verwenden. Als Ergebnis wird die Gesamtgröße durch angezeigtstimmte nicht mit der Summe der Festplattennutzung jedes Unterverzeichnisses überein, als ich es verwendete
Es hat eine Weile gedauert, bis mir klar wurde, dass Nautilus die gelöschten Dateien an seinen Papierkorbordner sendet und dieser Ordner nicht im
du -sh *
Befehl aufgeführt ist. Ich wollte dies nur teilen, falls jemand vor dem gleichen Problem stand.quelle
Hmm, der beste Weg ist, diesen Befehl zu verwenden:
Dann können Sie Ordner aller Größen über Ihren gesamten Server abrufen. Einfach, Ihnen zu helfen, die größten Größen zu finden.
quelle
Folgendes ist leicht zu merken
https://explainshell.com/explain?cmd=ls+-ltrapR
quelle
Wenn Sie mehr Kontrolle über die
size
Verzeichnisse haben möchten, über die Sie die Verzeichnisse auflisten möchten, können Sie den Schalterthreshold
(-t
) wie folgt verwenden:du
-d
isku
sageh
- lesbares Formatt
- SchwellengrößeHier möchten wir alle Verzeichnisse auflisten, die größer als 1 GB sind.
Erklärung :
Einheiten, die im Wiki beschrieben werden, folgen:
quelle
Ich bin auf ein Problem gestoßen, das dem von Martin Wilde beschriebenen ähnelt. In meinem Fall habe ich nach dem Spiegeln mit rsync dasselbe Verzeichnis auf zwei verschiedenen Servern verglichen.
Anstatt ein Skript zu verwenden, habe ich das
-b
Flag hinzugefügt , dasdu
die Größe in Bytes zählt, und soweit ich feststellen kann, die Unterschiede auf den beiden Servern beseitigt. Sie können immer noch verwenden-s -h
, um eine verständliche Ausgabe zu erhalten.quelle
Platziere es in einem Init-Skript wie .bashrc ... passe def nach Bedarf an.
quelle
Geben Sie "ls -ltrh / path_to_directory" ein.
quelle