Narzędzie Linux do znajdowania największych plików / katalogów [zamknięte]

134

Szukam programu, który pokaże mi, które pliki / katalogi zajmują najwięcej miejsca, na przykład:

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

Wiem, że jest to możliwe w KDE3, ale wolałbym tego nie robić - preferowane są KDE4 lub linia poleceń.

Robert Munteanu
źródło
użytkownikom komputerów Mac chcę po prostu polecić to bezpłatne oprogramowanie o nazwie Disk Inventory X. pobierz je tutaj derlien.com , jest prosty w obsłudze dla systemu Mac OSX
Nimitack

Odpowiedzi:

131

Aby znaleźć największe 10 plików (linux / bash):

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

Aby znaleźć największe 10 katalogów:

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

Jedyną różnicą jest -type {d:f}.

Obsługuje pliki ze spacjami w nazwach i generuje rozmiary plików czytelne dla człowieka. Największy plik na liście jako ostatni. Argumentem do ogona jest liczba wyników, które widzisz (tutaj 10 największych).

Istnieją dwie techniki obsługi spacji w nazwach plików. Do find -print0 | xargs -0zastosowania ograniczników NULL zamiast spacji, a drugi xargs -I{}korzysta z nowej linii zamiast spacji aby zakończyć elementów wejściowych.

przykład:

$ 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
źródło
Największy plik wymieniony jako pierwszy : find . -type f -print0 | xargs -0 du | sort -nr | head -10 | cut -f2 | xargs -I{} du -sh {}(tzn. Użyj sort -nr | head -10zamiast sort -n | tail -10)
Sandra Rossi
200

Zawsze używam ncdu. Jest interaktywny i bardzo szybki.

Daenyth
źródło
Tak i jest mały!
Luke Stanley,
5
Kocham ncdu. To jedno z moich ulubionych znalezisk w Google.
Rob
5
Łał. skąd nie wiedziałem, że to istnieje? Dzięki!
piksel
22
+1000 za ncdu--- to jak htopza miejsce na dysku. Super przydatne!
Noah Sussman
ponieważ nie wydaje się być ani flagi opcja .config, oto klucz sekwencja prawdopodobnie będziesz wpisać przy każdym uruchomieniu go, jeśli lubisz widząc pliki i foldery zmieszane i względnych statystyk procentach [t] [g] [g].
rymo
37

Szybki podgląd:

du | sort -n

wyświetla wszystkie katalogi z największym ostatnim.

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

lub ponownie unikając zbędnego *:

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

wyświetla wszystkie katalogi w bieżącym katalogu z największymi ostatnimi.

(-n parametr do sortowania jest wymagany, aby pierwsze pole było posortowane jako liczba, a nie jako tekst, ale wyklucza to użycie parametru -h do du, ponieważ potrzebujemy znaczącej liczby do sortowania)

Inne parametry du są dostępne, jeśli chcesz podążać za dowiązaniami symbolicznymi (domyślnie nie podążaj za dowiązaniami symbolicznymi) lub po prostu pokaż rozmiar zawartości katalogu, na przykład z wyłączeniem podkatalogów. du może nawet zawrzeć na liście datę i godzinę ostatniej zmiany dowolnego pliku w katalogu.

mas
źródło
3
Czy * jest naprawdę konieczne. Czy domyślnie nie zawiera wszystkich plików w bieżącym katalogu?
Josh Hunt
Nie, * powinno być zbędne. Nie jestem pewien, czy używanie go jest oznaką dobrego lub złego nawyku. Dzięki za zwrócenie na to uwagi. Poprawiłem odpowiedź, aby odzwierciedlić ją jako opcjonalną.
mas
To dobrze, ale wyniki nie są zbyt przyjazne. Zazwyczaj zwracam się do tego:find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
deed02392
roman # du --max-depth = 1 | sort -n du: niedozwolona opcja - - użycie: du [-A] [-H | -L | -P] [-a | -s | -d głębokość] [-c] [-l] [-h | -k | -m | -B bsize] [-n] [-x] [-I maska] [plik ...]
holms
du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0- nieco
ładniej
23

W większości rzeczy wolę narzędzia CLI, ale jeśli chodzi o korzystanie z dysku, bardzo lubię filtrowanie światła . Prezentacja jest dla mnie bardziej intuicyjna niż jakiekolwiek inne narzędzie do zarządzania przestrzenią, jakie widziałem.

Zrzut ekranu Filelight

Anton Geraschenko
źródło
1
Filelight jest moim ulubionym narzędziem do przycinania kosmicznych świń.
Ryan Thompson,
Bardzo dobra aplikacja. +1
rpax
Wizualnie jest to intrygujące artystycznie, ale intuicyjne? Patrząc na to, nie mam pojęcia, co to reprezentuje. Czy ktoś może to wyjaśnić? Poszedłem na stronę i nie widziałem żadnego wyjaśnienia.
G-Man,
Podobnym narzędziem na Macu jest DaisyDisk, dostępny na daisydiskapp.com
computingfreak
20

Filelight jest lepszy dla użytkowników KDE, ale dla kompletności (tytuł pytania jest ogólny) Muszę wspomnieć, że Baobab jest zawarty w Ubuntu, czyli Disk Usage Analyzer:

wprowadź opis zdjęcia tutaj

Nicolas Raoul
źródło
Jeśli szukasz odpowiednika tego na platformie Mac, sprawdź DaisyDisk.
computingfreak
8

Narzędzie GUI, KDirStat , pokazuje dane zarówno w formie tabeli, jak i graficznie. Możesz naprawdę szybko zobaczyć, gdzie używana jest większość miejsca.

wprowadź opis zdjęcia tutaj

Nie jestem pewien, czy jest to dokładnie to narzędzie KDE, którego nie chciałeś, ale myślę, że nadal powinno być wymienione w takim pytaniu. Jest dobry i wiele osób prawdopodobnie tego nie wie - dowiedziałem się o tym dopiero niedawno.

Jonik
źródło
Dziękuję za odpowiedź. Jest to dokładnie to samo narzędzie, które miałem w KDE3, ale przeniosłem się do KDE 4.
Robert Munteanu,
Czy na pewno nie możesz uzyskać kdirstat dla KDE4?
Jonik
4
Kdirstat jest bardzo powolny. Użyj ncduzamiast tego.
Daenyth,
Właśnie nacisnąłem ctrl + f, aby znaleźć ncdu, i zobaczyłem, że już głosowałem na @Daenyth
Rob
W KDE nazywa się to po prostu k4dirstat .
phihag
5

Kombinacja jest zawsze najlepszą sztuczką na Uniksie.

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

Wyświetli rozmiary katalogów w KB i posortuje, aby dać największe na końcu.
Widok drzewa wymaga jednak trochę więcej fu ... czy to naprawdę jest potrzebne?

Zauważ, że ten skan jest zagnieżdżony w katalogach, więc będzie ponownie liczyć podkatalogi dla wyższych katalogów, a katalog podstawowy .pojawi się na końcu jako całkowita suma wykorzystania.

Możesz jednak użyć kontroli głębokości w znalezisku, aby wyszukać na określonej głębokości.
I bardziej zaangażuj się w skanowanie ... w zależności od tego, czego chcesz. Kontrola głębokości za findpomocą -maxdepthi -mindepthmoże ograniczać się do określonej głębokości podkatalogu.


Oto wyrafinowana odmiana twojego zbyt długiego problemu z arg

find . -type d -exec du -sk {} \; |  sort -n -k 1
nik
źródło
Próbowałem tego i dostałem wiele „du: Zadanie: brak takiego pliku lub katalogu”
Josh Hunt
Dziękuję za odpowiedź. Niestety dostaję bash: / usr / bin / du: Lista argumentów za długa
Robert Munteanu
3

Lubię GT5 . Możesz poruszać się po drzewie i otwierać podkatalogi, aby uzyskać więcej szczegółów. Do wyświetlania wyników wykorzystuje przeglądarkę internetową w trybie tekstowym, taką jak ryś. Zainstaluj elinks, aby uzyskać najlepsze wyniki.

alternatywny tekst

Dennis Williamson
źródło
2

Chociaż nie daje to takiego zagnieżdżonego wyjścia, spróbuj du

du -h /path/to/dir/

Uruchomienie tego w moim folderze Dokumenty wyrzuca następujące:

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
[...]

Następnie możesz posortować dane wyjściowe, przesyłając je do sort

du /path/to/dir | sort -n
Josh Hunt
źródło
Dzięki, ale nie pokazuje poprawnie, które katalogi są największe. Jeśli uruchomię go w moim katalogu domowym, wyjście nie będzie nadawać się do użytku.
Robert Munteanu
1

Oto skrypt, który robi to automatycznie.

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

Poniżej przedstawiono przykładowe dane wyjściowe skryptu:

**# 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% ***

Ten skrypt może być bardzo przydatny i przydatny!

Kam
źródło
2
Chociaż połączona witryna zawiera instrukcje, najlepiej jest sparafrazować, a następnie odwołać się do strony zewnętrznej (która i tak wygląda jak osobisty blog). Zapobiegnie to gniciu linków i pomoże większej liczbie osób na tej stronie
Kanadyjczyk Łukasz
1
Link jest zepsuty?
Danijel
1

Chociaż znalezienie procentowego wykorzystania dysku przez każdy plik / katalog jest korzystne, w większości przypadków wystarczająca jest znajomość największych plików / katalogów na dysku.

Więc moje ulubione to:

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

A wynik jest taki:

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
źródło
1

Aby znaleźć 25 najlepszych plików w bieżącym katalogu i jego podkatalogach:

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

Wyprowadzi 25 najlepszych plików, sortując je na podstawie rozmiaru plików za pomocą polecenia potokowego „sort -nr -k5”.

xpros
źródło
1

Inną alternatywą jest agedu, która dzieli miejsce na dysku według czasu ostatniego dostępu, co ułatwia zlokalizowanie plików marnujących miejsce.

Działa nawet na serwerze bez X Windows, obsługując tymczasowe strony internetowe, dzięki czemu można analizować zdalnie za pomocą wykresów. Zakładając, że adres IP serwera to 192.168.1.101, możesz wpisać go w wierszu polecenia serwera

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

Spowoduje to wydrukowanie nazwy użytkownika, hasła i adresu URL, za pomocą których można uzyskać dostęp do „GUI” i przeglądać wyniki. Po zakończeniu zakończ ageduz Ctrl+Dna serwerze.

Bastiaan
źródło
0
du -chs /*

Wyświetla listę katalogu głównego.

RusAlex
źródło
0

Aby uzupełnić listę nieco bardziej, dodaję mój ulubiony analizator użycia dysku, czyli xdiskusage.

GUI pamięta mnie o innych dobrych narzędziach X 'X, jest szybki i nie wzdęty, ale mimo to możesz łatwo nawigować w hierarchii i mieć kilka opcji wyświetlania:

$ xdiskusage /usr

wprowadź opis zdjęcia tutaj

mpy
źródło
0

Wypróbuj następującą linijkę (wyświetla 20 największych plików w bieżącym katalogu):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

lub w rozmiarach czytelnych dla ludzi:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

Drugie polecenie, aby poprawnie działać na OSX / BSD (jak sortnie ma -h), musisz zainstalować sortz coreutils.

Więc te aliasy są przydatne w plikach rc (za każdym razem, gdy ich potrzebujesz):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
kenorb
źródło