Suchen Sie nach einer Reihe von Befehlen, die mir die größten Dateien auf einem Laufwerk anzeigen.
Suchen Sie nach einer Reihe von Befehlen, die mir die größten Dateien auf einem Laufwerk anzeigen.
Antworten:
Wenn Sie nur große Dateien finden müssen, können Sie find
mit der -size
Option. Der nächste Befehl listet alle Dateien auf, die größer als 10 MB sind ( nicht zu verwechseln mit 10 MB ):
find / -size +10M -ls
Wenn Sie Dateien mit einer bestimmten Größe suchen möchten, können Sie diese mit einer Suche mit einer "Größe unter" kombinieren. Der nächste Befehl findet Dateien zwischen 10MiB und 12MiB:
find / -size +10M -size -12M -ls
apt-cache search 'disk usage'
listet einige Programme auf, die für die Analyse der Festplattennutzung verfügbar sind. Eine sehr vielversprechende Anwendung ist gt5
.
Aus der Paketbeschreibung:
Jahre sind vergangen und die Festplatten sind immer größer geworden, aber selbst in dieser unglaublich großen Festplatten-Ära scheint der Speicherplatz mit der Zeit zu verschwinden. Dieses kleine und effektive Programm bietet eine komfortablere Auflistung als das Standardprogramm du (1). Es zeigt an, was seit der letzten Ausführung passiert ist, und zeigt die Verzeichnisgröße und den Gesamtprozentsatz an. Mit den Cursortasten des textbasierten Browsers (Links, Elinks, Luchse usw.) können Sie in Verzeichnissen navigieren und zu diesen aufsteigen.
Im Abschnitt "Verwandte Pakete" von gt5 habe ich gefunden ncdu
. Aus seiner Paketbeschreibung:
Ncdu ist ein auf ncurses basierender du viewer. Es bietet eine schnelle und einfach zu bedienende Benutzeroberfläche durch das berühmte Hilfsprogramm du. Es ermöglicht das Durchsuchen der Verzeichnisse und das Anzeigen des Prozentsatzes der Festplattennutzung mit der ncurses-Bibliothek.
-ls
Ausgabe ist fest codiert (siehe Quellcode für pred_fls
und list_file- Funktionen). Sie können versuchen, die Ausgabe mit der -printf
Option zu approximieren , die Ausgabe mit awk find ... -type f -exec ls -ldh {} \; | column -t
Ich benutze nur eine Kombination von du
und sort
.
sudo du -sx /* 2>/dev/null | sort -n
0 /cdrom
0 /initrd.img
0 /lib64
0 /proc
0 /sys
0 /vmlinuz
4 /lost+found
4 /mnt
4 /nonexistent
4 /selinux
8 /export
36 /media
56 /scratchbox
200 /srv
804 /dev
4884 /root
8052 /bin
8600 /tmp
9136 /sbin
11888 /lib32
23100 /etc
66480 /boot
501072 /web
514516 /lib
984492 /opt
3503984 /var
7956192 /usr
74235656 /home
Dann ist es ein Fall von Spülen und Wiederholen . Zielen Sie auf die Unterverzeichnisse ab, die Sie für zu groß halten, führen Sie den Befehl für sie aus und finden Sie heraus, was das Problem verursacht.
Hinweis: Ich benutze du
das -x
Flag von 's' , um die Dinge auf ein Dateisystem zu beschränken (ich habe eine ziemlich komplizierte Anordnung von übergreifenden Dingen zwischen SSD und RAID5).
Hinweis 2: 2>/dev/null
Leitet alle Fehlermeldungen in Vergessenheit. Wenn sie dich nicht stören, ist es nicht obligatorisch.
du
Manpage: "Datenträgerverwendung jeder DATEI rekursiv für Verzeichnisse zusammenfassen."
Meine Lieblingslösung verwendet eine Mischung aus mehreren dieser guten Antworten.
du -aBM 2>/dev/null | sort -nr | head -n 50 | more
du
Argumente:
-a
für "alle" Dateien und Verzeichnisse. Lassen Sie es nur für Verzeichnisse aus-BM
Ausgabe der Größen in Megabyte (M) Blockgrößen (B)2>/dev/null
- Fehlermeldungen "Berechtigung verweigert" ausschließen (danke @Oli)sort
Argumente:
-n
für "numerisch"-r
für "umgekehrt" (vom größten zum kleinsten)head
Argumente:
-n 50
für die nur Top 50 Ergebnisse.more
wenn Sie eine kleinere Zahl verwendenHinweis: Das Präfix soll sudo
Verzeichnisse enthalten, auf die Ihr Konto nicht zugreifen darf.
Beispiel mit den 10 größten Dateien und Verzeichnissen in / var (einschließlich der Gesamtsumme).
cd /var
sudo du -aBM 2>/dev/null | sort -nr | head -n 10
7555M .
6794M ./lib
5902M ./lib/mysql
3987M ./lib/mysql/my_database_dir
1825M ./lib/mysql/my_database_dir/a_big_table.ibd
997M ./lib/mysql/my_database_dir/another_big_table.ibd
657M ./log
629M ./log/apache2
587M ./log/apache2/ssl_access.log
273M ./cache
qbis Antwort ist richtig, aber es wird sehr langsam sein, wenn es viele Dateien gibt, da es für jedes Element einen neuen ls-Prozess startet.
Eine viel schnellere Version, die find verwendet, ohne untergeordnete Prozesse zu erzeugen, ist printf, um die Größe in Bytes (% s) und den Pfad (% p) zu drucken.
find "$directory" -type f -printf "%s - %p\n" | sort -n | tail -n $num_entries
Verwenden Sie den folgenden Einzeiler, um die größten Top-20-Verzeichnisse (rekursiv) im aktuellen Ordner anzuzeigen:
du -ah . | sort -rh | head -20
oder (eher Unix-orientiert):
du -a . | sort -rn | head -20
Für die 20 größten Dateien im aktuellen Verzeichnis (rekursiv):
ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20
oder mit vom Menschen lesbaren Größen:
ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20
Bitte beachten Sie, dass dies
-h
nur für GNU verfügbar ist. Damitsort
es unter OSX / BSD ordnungsgemäß funktioniert, müssen Sie es von installierencoreutils
. Dann fügen Sie den Ordner in IhrenPATH
.
Daher sind diese Aliase nützlich, um sie in Ihren RC- Dateien zu haben (jedes Mal, wenn Sie sie brauchen):
alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
Dies scheint die perfekte Anwendung für find
:
find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5
Dieser Befehl findet alle Dateien im Verzeichnis $DIRECTORY
und führt ls -s
sie aus. Der letzte Befehl gibt die zugewiesene Größe einer Datei plus den Dateinamen aus. Das Ergebnis wird numerisch sortiert und die letzten fünf Einträge werden angezeigt. Als Ergebnis sehen Sie die 5 größten Dateien in einem $DIRETORY
beliebigen Unterverzeichnis. Wenn Sie eingeben tail -n 1
, wird nur die größte Datei angezeigt.
Außerdem kann man viel mit spielen find
. Sie können beispielsweise nach Dateien suchen, die jünger als n Tage sind ( -ctime -n
) oder die bestimmten Benutzern gehören ( -user johndoe
).
Wenn ich mehr freien Speicherplatz auf Servern schaffen muss, verwende ich diesen Befehl. Alle Dateien, die größer als 50 MB sind, und "du -h" machen eine bessere Liste der Dateien und "sort -n" nach der Pipe machen Liste numerisch sortiert nach Dateigröße.
find / -size +50M -type f -exec du -h {} \; | sort -n
Probieren Sie Baobab aus, es gibt Ihnen einen grafischen Überblick über Dateien und Ordner, Sie können sehen, wo sich die echten Weltraumfresser befinden und sie mit einem Klick löschen https://help.ubuntu.com/community/Baobab
Sie können Dateien auch nach Größe sortieren:
find . -type f -exec du -h {} \; | sort -k1 -h
Es werden nur Dateien gefunden und du -h
für jede Datei ausgeführt, die die Größe der Datei angibt. Zuletzt sortieren wir die Ausgabe von find
/ du
nach der ersten Spalte (in lesbarem Format).
Die zuletzt gedruckte Datei ist die größte.
Mit dem Befehl können Sie die größten Dateien anzeigen, während Sie die Verzeichnisse überspringen:
sudo find / -type f -printf “%s\t%p\n” | sort -n | tail -1
find $HOME -type f -printf ‘%s %p\n’ | sort -nr | head -10
Um alle Dateien zu finden, die größer als 100 MB sind (dies ist nicht 100 MB, sehen Sie hier, wenn Sie verwirrt sind):
find / -size +100M -ls
Mit dem folgenden Befehl werden die 5 größten Dateien im Ordner angezeigt $DIRECTORY
:
find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5
USING du
: Mit dem folgenden Befehl, der du verwendet, werden die Verzeichnisse mit den 20 größten Größen im Basisarbeitsordner angezeigt:
sudo du -a /home | sort -n -r | head -n 20
Um nun die größten Verzeichnisse / Dateien einschließlich der Unterordner anzuzeigen, führen Sie Folgendes aus:
du -Sh | sort -rh | head -n 10
Verwenden von ls
:
Führen Sie den folgenden Befehl aus, um die fünf größten Dateien im Verzeichnis / bin aufzulisten:
ls -lSh /bin | head -5
Sie können auch den hier gezeigten Disk Usage Analyzer oder Baobao verwenden .
Ein großartiges, benutzerfreundliches Tool, auf das in der Antwort auf eine ähnliche Frage verwiesen wird , ist NCurses Disk Usage
tool:
sudo ncdu /