Jak znaleźć najbardziej zajmujące miejsce katalogi lub pliki?

11

Na moim dysku brakuje miejsca:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda7       803G  715G   48G  95% /home

Chciałbym przejrzeć cały katalog domowy i znaleźć 10 najbardziej zajmujących miejsce katalogów lub plików, aby zdecydować, kogo usunąć.

du -sh *widzi rozmiar wszystkich podkatalogów, ale pobiera tylko bieżący folder. Być może będę musiał podzielić odpowiednio na wiele podkatalogów i rekurencyjnie, aby ustalić, którzy są sprawcami, których potrzebuję.

Czy jest na to dobry sposób?

Deqing
źródło

Odpowiedzi:

5

Jeśli możesz użyć GUI, wypróbuj Baobab . To narzędzie graficzne do analizy wykorzystania miejsca na dysku twardym.

Uwe Plonus
źródło
10

ncdu to opcja wiersza poleceń, która skanuje katalogi i wyświetla użycie dysku od najwyższej do najniższej. To moje narzędzie do tego.

Nadal będziesz musiał nurkować rekurencyjnie w ten sposób, ale jest to przyjemny łatwy sposób.

Obrabować
źródło
9

Użyj tego polecenia:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du / –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Pokaże ci rodzaj wykresu w linii poleceń pokazujący katalogi, które zajmują najwięcej miejsca w procentach.

Jeśli chcesz przeanalizować /hometylko - możesz to określić w poleceniu w następujący sposób:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du /home –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Będzie to wyglądać tak: wprowadź opis zdjęcia tutaj

Zabrano stąd .

mnmnc
źródło
9

du | sort -rn | głowa

  • du = Wykorzystanie dysku
  • sortuj według kolejności numerycznej, odwróć
  • dziesięć pierwszych linii
Julien
źródło
4

+1 dla Baobaba. w wierszu poleceń zwykle po prostu używam du -hcsx *lub du -hcsx * | sort -h(potrzebuje nieudanej najnowszej wersji sort), a następnie sprawdzam podkatalogi podczas pracy.

Ponadto, mcma przyjemną możliwością obliczania rozmiarów podkatalogów naciskając Ctrl+ Spacena wierzchu (naciśnij Ctrl+ Spacena górze .., aby obliczyć wielkość dla wszystkich podkatalogów. Następnie można wybrać sortować według wielkości w menu.

Stefan Seidel
źródło
2
w wierszu poleceń powinieneś spróbować ncdu. Zasadniczo jest to ncurses du.
Rob
1

Spróbuj tego:

du -a /dir | sort -nr | cut -f2 | xargs du -sh | head -n 10
Rajeev
źródło
0

Kolejny ulubiony GUI: kdirstat

Ma ładne możliwości drążenia i (rozszerzalne) menu narzędzi, które pomogą Ci usunąć / skompresować pliki.

Mam również skrypt wiersza polecenia, który nazywam dir_usage , który przesłałem do pastebin.

Rich Homolka
źródło
-1
find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

Powyższy wiersz poleceń wykonuje następujące czynności (w kolejności):

  • Znajdź wszystkie pliki (nie katalogi) w bieżącym folderze
  • Wyświetl użycie każdego z nich
  • Sortuj wyniki numerycznie
  • Używaj tylko ostatnich 10 linii (najwyższe użycie)
  • Wytnij 10 nazw plików (pierwsza kolumna to użycie, druga to nazwa pliku)
  • Wyświetl użycie dla każdej nazwy pliku (w formacie ludzkim)

Spowoduje to wyświetlenie listy czytelnych dla człowieka rozmiarów największych 10 plików w bieżącym folderze i podfolderach.

użytkownik275234
źródło
3
Czy potrafisz rozwinąć swoją odpowiedź?
50–3