Linux-Dienstprogramm zum Auffinden der größten Dateien / Verzeichnisse [closed]

134

Ich suche ein Programm, das mir anzeigt, welche Dateien / Verzeichnisse den meisten Platz einnehmen, so etwas wie:

74% music
 \- 60% music1
 \- 14% music2
12% code
13% other

Ich weiß, dass es in KDE3 möglich ist, aber ich würde das lieber nicht tun - KDE4 oder die Befehlszeile werden bevorzugt.

Robert Munteanu
quelle
für Mac - Nutzer, ich will nur diese kostenlose Software Disk - Inventar X. nannte es hier herunterladen empfehlen derlien.com es für Mac OS X einfach zu bedienen ist
Nimitack

Antworten:

131

So finden Sie die 10 größten Dateien (Linux / Bash):

find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

So finden Sie die 10 größten Verzeichnisse:

find . -type d -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

Einziger Unterschied ist -type {d:f}.

Verarbeitet Dateien mit Leerzeichen in den Namen und erzeugt lesbare Dateigrößen in der Ausgabe. Größte zuletzt aufgeführte Datei. Das Argument für tail ist die Anzahl der angezeigten Ergebnisse (hier die 10 größten).

Es gibt zwei Techniken, um Leerzeichen in Dateinamen zu behandeln. Das find -print0 | xargs -0verwendet xargs -I{}Nulltrennzeichen anstelle von Leerzeichen und das zweite verwendet Zeilenumbrüche anstelle von Leerzeichen, um Eingabeelemente zu beenden.

Beispiel:

$ find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

  76M    ./snapshots/projects/weekly.1/onthisday/onthisday.tar.gz
  76M    ./snapshots/projects/weekly.2/onthisday/onthisday.tar.gz
  76M    ./snapshots/projects/weekly.3/onthisday/onthisday.tar.gz
  76M    ./tmp/projects/onthisday/onthisday.tar.gz
  114M   ./Dropbox/snapshots/weekly.tgz
  114M   ./Dropbox/snapshots/daily.tgz
  114M   ./Dropbox/snapshots/monthly.tgz
  117M   ./Calibre Library/Robert Martin/cc.mobi
  159M   ./.local/share/Trash/files/funky chicken.mpg
  346M   ./Downloads/The Walking Dead S02E02 ... (dutch subs nl).avi
Sean
quelle
Größte zuerst aufgeführte Datei : find . -type f -print0 | xargs -0 du | sort -nr | head -10 | cut -f2 | xargs -I{} du -sh {}(dh sort -nr | head -10statt verwenden sort -n | tail -10)
Sandra Rossi
200

Ich benutze immer ncdu. Es ist interaktiv und sehr schnell.

Daenyth
quelle
Ja und es ist klein!
Luke Stanley
5
Ich liebe NCDU. Es ist eines meiner Lieblingsfunde bei Google.
Rob
5
Beeindruckend. Woher wusste ich nicht, dass es das gibt? Vielen Dank!
Pixel
22
+1000 für ncdu--- Es ist wie htopfür Speicherplatz. Super nützlich!
Noah Sussman
da scheint es Ihnen wahrscheinlich jedes Mal , wenn es keine Flaggen noch eine .config Option zu sein, hier ist die Tastenfolge laufen geben werden , wenn Sie sehen , Dateien und Ordner vermischte und relative Anteil Statistiken wie: [t] [g] [g].
Rymo
37

Für einen schnellen Überblick:

du | sort -n

listet alle Verzeichnisse mit dem größten letzten auf.

du --max-depth=1 * | sort -n

oder auch hier die Redundanz vermeiden *:

du --max-depth=1 | sort -n

listet alle Verzeichnisse im aktuellen Verzeichnis mit dem größten letzten auf.

(Der zu sortierende Parameter -n ist erforderlich, damit das erste Feld als Zahl und nicht als Text sortiert wird. Dies schließt jedoch die Verwendung des Parameters -h aus, da für die Sortierung eine signifikante Zahl erforderlich ist.)

Weitere Parameter für du sind verfügbar, wenn Sie beispielsweise symbolischen Links folgen möchten (standardmäßig nicht symbolischen Links) oder nur die Größe des Verzeichnisinhalts ohne Unterverzeichnisse anzeigen möchten. Sie können sogar das Datum und die Uhrzeit der letzten Änderung einer Datei im Verzeichnis in die Liste aufnehmen.

mas
quelle
3
Ist das * wirklich nötig. Enthält es nicht standardmäßig alle Dateien im aktuellen Verzeichnis?
Josh Hunt
Nein, das * sollte redundant sein. Ich bin mir nicht sicher, ob es ein Zeichen für eine gute oder eine schlechte Angewohnheit ist. Vielen Dank für den Hinweis. Ich habe die Antwort geändert, um sie als optional wiederzugeben.
mas
Das ist in Ordnung, aber die Ergebnisse sind nicht sehr freundlich. Normalerweise wende ich mich dazu:find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
deed02392 06.03.12
römisch # du --max-depth = 1 | sort -n du: illegale Option - - Verwendung: du [-A] [-H | -L | -P] [-a | -s | -d Tiefe] [-c] [-l] [-h | -k | -m | -B bsize] [-n] [-x] [-I mask] [file ...]
holms
du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0- ein bisschen aufgeräumter
Stuart Cardall
23

Für die meisten Dinge bevorzuge ich CLI-Tools, aber für die Laufwerksnutzung mag ich Filelight sehr . Die Präsentation ist für mich intuitiver als jedes andere Raummanagement-Tool, das ich je gesehen habe.

Filelight-Screenshot

Anton Geraschenko
quelle
1
Filelight ist mein bevorzugtes Werkzeug zum Beschneiden von Weltraumschweinen.
Ryan Thompson
Sehr gute App. +1
rpax
Visuell ist es künstlerisch faszinierend, aber intuitiv? Wenn ich es mir nur ansehe, habe ich keine Ahnung, was es darstellt. Kann es jemand erklären? Ich bin zur Seite gegangen und habe keine Erklärung dafür gesehen.
G-Man
Ein ähnliches Tool für Mac ist DaisyDisk, verfügbar unter daisydiskapp.com
computingfreak
20

Filelight ist besser für KDE-Benutzer, aber der Vollständigkeit halber (der Titel der Frage ist allgemein) muss ich erwähnen, dass Baobab in Ubuntu enthalten ist, auch bekannt als Disk Usage Analyzer:

Bildbeschreibung hier eingeben

Nicolas Raoul
quelle
Wenn Sie auf der Mac-Plattform nach einer Entsprechung suchen, sehen Sie sich DaisyDisk an.
Computingfreak
8

Ein GUI-Tool, KDirStat , zeigt die Daten sowohl in Tabellenform als auch grafisch an. Sie können sehr schnell sehen, wo der größte Teil des Raums genutzt wird.

Bildbeschreibung hier eingeben

Ich bin mir nicht sicher, ob dies genau das KDE-Tool ist, das Sie nicht wollten, aber ich denke, es sollte trotzdem in einer solchen Frage erwähnt werden. Es ist gut und viele Leute wissen es wahrscheinlich nicht - ich habe es erst kürzlich selbst erfahren.

Jonik
quelle
Danke für die Antwort. Es ist genau das gleiche Tool, das ich in KDE3 hatte, aber ich bin zu KDE 4 gewechselt.
Robert Munteanu
Sind Sie sicher, dass Sie kdirstat für KDE4 nicht bekommen können?
Jonik
4
Kdirstat ist sooooo langsam. Verwenden Sie ncdustattdessen.
Daenyth
Ich habe gerade Strg + F gedrückt, um ncdu zu finden, und festgestellt, dass ich @Daenyth
Rob bereits
In KDE heißt es einfach k4dirstat .
Phihag
5

Eine Kombination ist unter Unix immer der beste Trick.

du -sk $(find . -type d) | sort -n -k 1

Zeigt die Verzeichnisgröße in KB an und sortiert sie, um am Ende die größte zu erhalten.
Die Baumansicht benötigt jedoch etwas mehr Energie ... wird sie wirklich benötigt?

Beachten Sie, dass dieser Scan verzeichnisübergreifend verschachtelt ist, sodass die Unterverzeichnisse für die höheren Verzeichnisse erneut gezählt werden und das Basisverzeichnis .am Ende als Gesamtnutzungssumme angezeigt wird.

Sie können jedoch eine Tiefensteuerung für den Fund verwenden, um nach einer bestimmten Tiefe zu suchen.
Und beschäftigen Sie sich viel mehr mit dem Scannen ... je nachdem, was Sie wollen. Tiefenkontrolle von findmit -maxdepthund -mindepthkann auf eine bestimmte Unterverzeichnis-Tiefe beschränkt werden.


Hier ist eine verfeinerte Variante für Ihr Problem, das zu lang ist

find . -type d -exec du -sk {} \; |  sort -n -k 1
nik
quelle
Ich habe das ausprobiert und habe eine Menge 'du: Task: Keine solche Datei oder Verzeichnis'
Josh Hunt
Danke für die Antwort. Leider bekomme ich bash: / usr / bin / du: Argumentliste zu lang
Robert Munteanu
3

Ich mag GT5 . Sie können in der Baumstruktur navigieren und Unterverzeichnisse öffnen, um detailliertere Informationen zu erhalten. Es verwendet einen Webbrowser im Textmodus, z. B. Luchs, um die Ergebnisse anzuzeigen. Installieren Sie elinks, um die besten Ergebnisse zu erzielen .

Alt-Text

Dennis Williamson
quelle
2

Versuchen Sie es, obwohl es Ihnen keine solche verschachtelte Ausgabe gibt du

du -h /path/to/dir/

Wenn Sie das in meinem Ordner "Dokumente" ausführen, wird Folgendes ausgegeben:

josh-hunts-macbook:Documents joshhunt$ du -h
  0B    ./Adobe Scripts
  0B    ./Colloquy Transcripts
 23M    ./Electronic Arts/The Sims 3/Custom Music
  0B    ./Electronic Arts/The Sims 3/InstalledWorlds
364K    ./Electronic Arts/The Sims 3/Library
 77M    ./Electronic Arts/The Sims 3/Recorded Videos
101M    ./Electronic Arts/The Sims 3/Saves
 40M    ./Electronic Arts/The Sims 3/Screenshots
1.6M    ./Electronic Arts/The Sims 3/Thumbnails
387M    ./Electronic Arts/The Sims 3
387M    ./Electronic Arts
984K    ./English Advanced/Documents
1.8M    ./English Advanced
  0B    ./English Extension/Documents
212K    ./English Extension
100K    ./English Tutoring
5.6M    ./IPT/Multimedia Assessment Task
720K    ./IPT/Transaction Processing Systems
8.6M    ./IPT
1.5M    ./Job
432K    ./Legal Studies/Crime
8.0K    ./Legal Studies/Documents
144K    ./Legal Studies/Family/PDFs
692K    ./Legal Studies/Family
1.1M    ./Legal Studies
380K    ./Maths/Assessment Task 1
388K    ./Maths
[...]

Anschließend können Sie die Ausgabe sortieren, indem Sie sie an weiterleiten sort

du /path/to/dir | sort -n
Josh Hunt
quelle
Danke, aber es wird nicht richtig angezeigt, welche Verzeichnisse am größten sind. Wenn ich es in meinem Home-Verzeichnis starte, ist die Ausgabe unbrauchbar.
Robert Munteanu
1

Hier ist das Skript, das dies automatisch für Sie erledigt.

http://www.thegeekscope.com/linux-script-to-find-largest-files/

Es folgt die Beispielausgabe des Skripts:

**# sh get_largest_files.sh / 5**

[SIZE (BYTES)]     [% OF DISK] [OWNER]         [LAST MODIFIED ON]        [FILE] 

56421808           0%           root           2012-08-02 14:58:51       /usr/lib/locale/locale-archive
32464076           0%           root           2008-09-18 18:06:28       /usr/lib/libgcj.so.7rh.0.0
29147136           0%           root           2012-08-02 15:17:40       /var/lib/rpm/Packages
20278904           0%           root           2008-12-09 13:57:01       /usr/lib/xulrunner-1.9/libxul.so
16001944           0%           root           2012-08-02 15:02:36       /etc/selinux/targeted/modules/active/base.linked

Total disk size: 23792652288 Bytes
Total size occupied by these files: 154313868 Bytes  [ 0% of Total Disc Space  ]

*** Note: 0% represents less than 1% ***

Möglicherweise finden Sie dieses Skript sehr praktisch und nützlich!

Kam
quelle
2
Die verlinkte Website enthält zwar Anweisungen, Sie sollten jedoch die externe Website (die sowieso wie ein persönlicher Blog aussieht) umschreiben und dann darauf verweisen. Dies verhindert das Verrotten von Links und hilft mehr Menschen auf dieser Website
Kanadier Luke
1
Link ist kaputt?
Danijel
1

Obwohl es von Vorteil ist, den Prozentsatz der Festplattennutzung für jede Datei / jedes Verzeichnis zu ermitteln, ist es meistens ausreichend, die größten Dateien / Verzeichnisse auf der Festplatte zu kennen.

Also mein Favorit ist das:

# du -a | sort -n -r | head -n 20

Und die Ausgabe ist wie folgt:

28626644        .
28052128        ./www
28044812        ./www/vhosts
28017860        ./www/vhosts/example.com
23317776        ./www/vhosts/example.com/httpdocs
23295012        ./www/vhosts/example.com/httpdocs/myfolder
23271868        ./www/vhosts/example.com/httpdocs/myfolder/temp
11619576        ./www/vhosts/example.com/httpdocs/myfolder/temp/main
11590700        ./www/vhosts/example.com/httpdocs/myfolder/temp/main/user
11564748        ./www/vhosts/example.com/httpdocs/myfolder/temp/others
4699852         ./www/vhosts/example.com/stats
4479728         ./www/vhosts/example.com/stats/logs
4437900         ./www/vhosts/example.com/stats/logs/access_log.processed
401848          ./lib
323432          ./lib/mysql
246828          ./lib/mysql/mydatabase
215680          ./www/vhosts/example.com/stats/webstat
182364          ./www/vhosts/example.com/httpdocs/tmp/aaa.sql
181304          ./www/vhosts/example.com/httpdocs/tmp/bbb.sql
181144          ./www/vhosts/example.com/httpdocs/tmp/ccc.sql
trante
quelle
1

So finden Sie die 25 wichtigsten Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen:

find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25

Die ersten 25 Dateien werden durch Sortieren nach der Größe der Dateien mit dem Pipe-Befehl "sort -nr -k5" ausgegeben.

xpros
quelle
1

Eine andere Alternative ist agedu, bei der der Speicherplatz nach der letzten Zugriffszeit aufgeteilt wird, wodurch es einfacher ist, Speicherplatz zu finden, der Dateien verschwendet.

Es funktioniert sogar auf einem Server ohne X Windows, indem temporäre Webseiten bereitgestellt werden, sodass die Nutzung mithilfe von Diagrammen aus der Ferne analysiert werden kann. Angenommen, die IP-Adresse des Servers lautet 192.168.1.101, können Sie dies in die Befehlszeile des Servers eingeben

agedu -s / -w --address 192.168.1.101:60870 --auth basic -R

Dies gibt den Benutzernamen, das Passwort und die URL aus, mit denen Sie auf die "GUI" zugreifen und die Ergebnisse durchsuchen können. Wenn Sie fertig sind, beenden Sie agedumit Ctrl+Dauf dem Server.

Bastiaan
quelle
0
du -chs /*

Zeigt Ihnen eine Liste des Stammverzeichnisses.

RusAlex
quelle
0

Um die Liste ein wenig zu vervollständigen, füge ich meinen bevorzugten Datenträgernutzungsanalysator hinzu xdiskusage.

Die grafische Benutzeroberfläche erinnert sich an einige andere gute alte X-Dienstprogramme. Sie ist schnell und nicht aufgebläht. Sie können jedoch problemlos in der Hierarchie navigieren und einige Anzeigeoptionen festlegen:

$ xdiskusage /usr

Bildbeschreibung hier eingeben

mpy
quelle
0

Versuchen Sie es mit dem folgenden Einzeiler (zeigt die 20 größten Dateien im aktuellen Verzeichnis an):

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

Der zweite Befehl richtig auf OSX / BSD arbeiten (wie sorthaben nicht -h), müssen Sie die Installation sortvon coreutils.

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'
Kenorb
quelle