Znajdowanie wszystkich dużych plików w głównym systemie plików


124

Mam serwer linux, który obecnie zajmuje mniej miejsca:

/dev/sda3              20G   15G  4.2G  78% /
/dev/sda6              68G   42G   23G  65% /u01
/dev/sda2              30G  7.4G   21G  27% /opt
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                  48G  8.2G   39G  18% /dev/shm

Jak widzisz. /wynosi 78%. Chcę sprawdzić, które pliki lub foldery zajmują miejsce.

Próbowałem tego:

find . -type d -size +100M

Który pokazuje taki wynik:

./u01/app/june01.dbf
./u01/app/temp01.dbf
./u01/app/smprd501.dbf
./home/abhishek/centos.iso
./home/abhishek/filegroup128.jar

To jest mój problem. Chcę tylko nazwy plików znajdujących się w folderach, które zajmują miejsce w, /a nie w /u01lub /home. Ponieważ /jest to podstawa wszystkiego, pokazuje mi każdy plik mojego serwera.

Czy można uzyskać duże pliki, które stanowią 78% /?


3
Zobacz -xdevpredykat znalezienia. Zobacz także du -kx / | xdu(lub xdiskusage).
Stéphane Chazelas


1
istotnyfind . -type f -print | xargs du -sk | sort -rn
użytkownik13107,

Odpowiedzi:


216

Próbować:

find / -xdev -type f -size +100M

Zawiera listę wszystkich plików o rozmiarze większym niż 100 M.

Jeśli chcesz wiedzieć o katalogu, możesz spróbować ncdu.

Jeśli nie korzystasz z systemu Linux, może być konieczne użycie -size +204800lub -size +104857600c, ponieważ Mprzyrostka oznaczającego megabajty nie ma w POSIX.

find / -xdev -type f -size +102400000c

1
-xdevpo prostu zapobiega znalezieniu się przez systemy plików, więc przeszukasz tylko bieżący dysk fizyczny. Jeśli nie tego chcesz, po prostu usuń -xdevargument.
płyty grzejne

49

Oprócz odpowiedzi @Gnouc możesz również dodać, ls -laaby uzyskać więcej informacji. Powinieneś sudo privilegesto zrobić.

$ find / -xdev -type f -size +100M -exec ls -la {} \; | sort -nk 5

Aby zobaczyć tylko pliki znajdujące się w gigbyte, wykonaj:

root# du -ahx / | grep -E '\d+G\s+'


1.8G    /.Spotlight-V100/Store-V2/A960D58E-A644-4497-B3C1-866A529BF919
1.8G    /.Spotlight-V100/Store-V2

44

Następujące polecenie nie tylko pozwala znaleźć 50 największych plików (> 100 M) w twoim systemie plików, ale także posortować (GNU sort) według największych:

find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh | head -n50

-xdev Nie schodź z katalogów w innych systemach plików.

W przypadku findużycia BSD, -xktóre jest równoważne z przestarzałym -xdevpierwotnym.

Dla wszystkich plików i katalogów jest to jeszcze łatwiejsze:

du -ahx / | sort -rh | head -20

( -xflaga jest wymagana do ograniczenia dudo jednego systemu plików)

Jeśli nie używasz GNU sort(od coreutils), użyj go bez -h:

du -ax / | sort -rn | head -20

Aktualnie katalogu tylko (dla szybszych rezultatów), wymienić /się ..


1
Wspomniałbym, że ta metoda jest dobra, ponieważ -hpokazuje dane wyjściowe czytelne dla człowieka i dodaje przykładowe dane wyjściowe.
Ciro Santilli 21 改造 中心 法轮功 六四 事件

Bardzo dobre rozwiązanie. Dziękuję Ci.
Tigin
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.