Suchen nach Dateien, die den meisten Speicherplatz belegen


43

Ist es möglich, die größten Dateien auf meiner Festplatte aufzulisten? Ich verwende häufig df -H, um meine Datenträgernutzung anzuzeigen, aber dies gibt nur den vollen Prozentsatz, die verbleibenden GB usw. an.

Ich mache viele datenintensive Berechnungen, mit einer großen Anzahl kleiner Dateien und einer sehr kleinen Anzahl sehr großer Dateien. Da der größte Teil meines Speicherplatzes in einer sehr kleinen Anzahl von Dateien gespeichert ist, kann es schwierig sein, den Speicherort dieser großen Dateien zu ermitteln. Das Löschen einer 1-kB-Datei schafft nicht viel Speicherplatz, das Löschen einer 100-GB-Datei jedoch. Gibt es eine Möglichkeit, die Dateien auf der Festplatte nach ihrer Größe zu sortieren?

Vielen Dank.


Antworten:


47

Mit den standardmäßig verfügbaren Werkzeugen:

So listen Sie die 10 größten Dateien aus dem aktuellen Verzeichnis auf: du . | sort -nr | head -n10

So listen Sie die größten Verzeichnisse aus dem aktuellen Verzeichnis auf: du -s * | sort -nr | head -n10

UPDATE Heutzutage verwende ich normalerweise eine besser lesbare Form (wie Jay Chakra in einer anderen Antwort erklärt und das weglässt | head -n10, einfach vom Bildschirm scrollen lassen. Die letzte Zeile enthält die größte Datei oder das größte Verzeichnis (Baum).

Manchmal, z. Wenn Sie im aktuellen Verzeichnis viele Mount-Punkte haben, anstatt -xoder mehrere zu verwenden --exclude=PATTERN, ist es einfacher, das Dateisystem ( häufig /mnt ) auf einem nicht verwendeten Mount-Punkt zu mounten und von dort aus zu arbeiten.

Beachten Sie jedoch, dass bei der Arbeit mit großen (NFS-) Volumes das Speicher-Backend (Filer) erheblich belastet werden kann, wenn duviele (Unter-) Verzeichnisse ausgeführt werden. In diesem Fall ist es besser, quotadie Lautstärke einzustellen.


3
Können Sie sie für Ihre erste Option nicht einfach mit ls -Sl | headauflisten?
Bernhard

Nein, dudurchläuft den gesamten Verzeichnisbaum, während ls -S nur das aktuelle Verzeichnis überprüft.
jippie

35

Zur Antwort von jippie hinzufügen

So listen Sie die größten Verzeichnisse des aktuellen Verzeichnisses in einem für Menschen lesbaren Format auf:

du -sh * | sort -hr | head -n10

Stichprobe:

[~]$ du -sh * | sort -hr | head -n10
48M app
11M lib
6.7M    Vendor
1.1M    composer.phar
488K    phpcs.phar
488K    phpcbf.phar
72K doc
16K nbproject
8.0K    composer.lock
4.0K    README.md

Es macht es bequemer zu lesen :)


14

Probieren Sie es aus ncdu, da es Ihnen einen Überblick über die Festplattennutzung geben kann. Von seiner Website:

Ein Datenträgernutzungsanalysator mit einer ncurses-Schnittstelle, der auf einem Remote-Server ausgeführt werden soll, auf dem Sie keine vollständige grafische Konfiguration haben, sondern eine einfache SSH-Verbindung. ncdu soll schnell, einfach und benutzerfreundlich sein und in jeder POSIX-ähnlichen Minimalumgebung mit installierten ncurses ausgeführt werden können.


3

(Gnu)

du -max /dir | sort -nZeigt große Dateien sowie große Verzeichnisse an und kann verwendet werden, um zu bestimmen, wo Sie eine Bereinigung durchführen müssen.

du -max | sort -n | tail -1000
...
46632   ./i386/update/SuSE-SLES/8/rpm/i586/kernel-source-2.4.21-138.i586.rpm
49816   ./UnitedLinux/apt/i386/RPMS.updates/k_debug-2.4.21-138.i586.rpm
679220  ./UnitedLinux/apt/i386/RPMS.updates
679248  ./UnitedLinux/apt/i386
679252  ./UnitedLinux/apt
691820  ./UnitedLinux/i586
691836  ./i386/update/SuSE-SLES/8/rpm/i586
695192  ./i386/update/SuSE-SLES/8/rpm
695788  ./i386/update/SuSE-SLES/8
695792  ./i386/update/SuSE-SLES
695804  ./i386/update
695808  ./i386
1390184 ./UnitedLinux

(Ich weiß, das ist ein ziemlich alter Baum: p)


2

Es gibt eine einfache und effektive Möglichkeit, die Größe jeder Datei und jedes Verzeichnisses in Ubuntu zu ermitteln:

Anwendungen> Zubehör> Disk Usage Analyzer

Klicken Sie in diesem Fenster in der Symbolleiste auf die Schaltfläche "Dateisystem durchsuchen". Nach kurzer Zeit (Sekunden) haben Sie die Festplattenauslastung aller Verzeichnisse und Dateien.



0

Mit diesem Befehl können Sie versuchen, alle Dateien aufzulisten, die größer als 20 MB sind.

find / -type f -size +20000k -exec ls -lh {} \; 2> /dev/null \
  | awk '{ print $NF ": " $5 }'  | sort -hrk 2,2

3
Wenn die größte Datei in Ihrem Dateisystem 20 MB groß ist, würde Ihnen wahrscheinlich nicht der Speicherplatz ausgehen. Zumindest mit HD machte dieses Jahrtausend
Kevin

Das ist nur ein Beispiel, Sie legen dort, was Sie wollen. Es findet alles, was größer als 20 MB ist, nicht nur 20 MB-Dateien.
Patseb

ls -lhdann sort?? ls -soder stat -c %bsind wohl besser.
Mikel

Ich verstehe nicht Mein Beispiel benutzt ls und sort. Er wollte Dateien über die gesamte Festplatte und nicht über das Verzeichnis finden.
Patseb

0

Geben Sie den folgenden Befehl ein

cd /

dann tippe

du -sh * | grep G

Der obige Befehl gibt an, wie viel Speicher von welchem ​​Verzeichnis belegt wird. Danach müssen Sie entscheiden, welches Verzeichnis oder welche Datei Sie löschen möchten


-2

Sie können mit diesem Befehl versuchen, es wird die große Datei aufgelistet:

ls -lrS | tail -1

zeigt das aktuelle Verzeichnis, nicht die gesamte Festplatte.
slm

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.