Znajdowanie plików, które zajmują najwięcej miejsca na dysku


43

Czy można wymienić największe pliki na moim dysku twardym? Często używam df -Hdo wyświetlania zużycia dysku, ale daje to tylko procent pełnego zużycia, pozostałe GB itp.

Wykonuję wiele obliczeń wymagających dużej ilości danych, z dużą liczbą małych plików i bardzo małą liczbą bardzo dużych plików. Ponieważ większość mojego miejsca na dysku znajduje się w bardzo małej liczbie plików, odnalezienie tych dużych plików może być trudne. Usunięcie pliku 1 kB nie zwalnia dużo miejsca, ale usunięcie pliku 100 GB. Czy istnieje sposób sortowania plików na dysku twardym pod względem ich wielkości?

Dzięki.


Aby zapoznać się z „tdu”, zobacz także: unix.stackexchange.com/questions/425615/…
Joseph Paul

Odpowiedzi:


47

Za pomocą standardowych dostępnych narzędzi:

Aby wyświetlić listę 10 największych plików z bieżącego katalogu: du . | sort -nr | head -n10

Aby wyświetlić największe katalogi z bieżącego katalogu: du -s * | sort -nr | head -n10

AKTUALIZACJA W dzisiejszych czasach zwykle używam bardziej czytelnej formy (jak Jay Chakra wyjaśnia w innej odpowiedzi i pomiń | head -n10, po prostu pozwól mu przewinąć ekran. Ostatni wiersz ma największy plik lub katalog (drzewo).

Czasami np. gdy w bieżącym katalogu znajduje się wiele punktów instalacji, zamiast używania -xlub wielu --exclude=PATTERN, wygodniej jest zamontować system plików na nieużywanym punkcie instalacji ( często /mnt ) i pracować z tego miejsca.

Pamiętaj, że podczas pracy z dużymi woluminami (NFS) możesz spowodować znaczne obciążenie zaplecza pamięci (filer) podczas pracy dunad wieloma (pod) katalogami. W takim przypadku lepiej jest rozważyć ustawienie quotagłośności.


3
W przypadku pierwszej opcji nie możesz po prostu wymienić ich ls -Sl | head?
Bernhard

Nie, przegląda ducałe drzewo katalogów, podczas gdy ls -S sprawdza tylko bieżący katalog.
jippie

35

Dodanie do odpowiedzi jippie

Aby wyświetlić listę największych katalogów z bieżącego katalogu w formacie czytelnym dla człowieka:

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

Próba:

[~]$ 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

Ułatwia to czytanie :)


14

Spróbuj ncdu, ponieważ może dać ci przegląd użycia dysku. Z jego strony internetowej:

Analizator użycia dysku z interfejsem ncurses, przeznaczony do uruchomienia na zdalnym serwerze, na którym nie masz całej konfiguracji graficznej, ale masz do czynienia z prostym połączeniem SSH. ncdu ma być szybki, prosty i łatwy w użyciu i powinien być w stanie działać w każdym minimalnym środowisku podobnym do POSIX z zainstalowanymi ncurses.


3

(gnu antylopa)

du -max /dir | sort -nWyświetla duże pliki, a także duże katalogi, można użyć do określenia, gdzie trzeba zrobić porządki.

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

(Wiem, że to dość stare drzewo: p)


2

Istnieje prosty i skuteczny sposób na znalezienie rozmiaru każdego pliku i katalogu w Ubuntu:

Aplikacje> Akcesoria> Analizator wykorzystania dysku

w tym oknie kliknij przycisk „Skanuj system plików” na pasku narzędzi. po krótkim czasie (sekundach) masz użycie dysku dla każdego katalogu i pliku.



0

Możesz wypróbować to polecenie, wyświetli ono listę wszystkich plików większych niż 20 Mb.

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

3
Jeśli największy plik w systemie plików ma 20 MB, prawdopodobnie nie zabraknie miejsca na dysku. Przynajmniej z jakimkolwiek HD uczyniło to milenium
Kevin

To tylko przykład, umieszczasz tam, co chcesz. Znajdzie wszystko, co jest większe niż 20 MB, a nie tylko 20 MB plików.
patseb

ls -lhwięc sort?? ls -slub stat -c %bsą prawdopodobnie lepsze.
Mikel

Nie rozumiem Mój przykład używa ls i sortuje. Chciał znaleźć pliki na całym dysku, a nie w katalogu.
patseb

0

wpisz następujące polecenie

Płyta CD /

następnie wpisz

du -sh * | grep G.

powyższe polecenie pokazuje, ile pamięci zajmuje dany katalog. potem musisz zdecydować, który katalog lub plik chcesz usunąć


-2

Możesz wypróbować to polecenie, wyświetli on duży plik:

ls -lrS | tail -1

pokazuje bieżący katalog, a nie cały dysk twardy.
slm

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.