2009-07-21 06:54:48 +0000 2009-07-21 06:54:48 +0000
134
134

Narzędzie linuksowe do wyszukiwania największych plików/katalogów

Szukam programu, który pokaże mi, które pliki/katalogi zajmują najwięcej miejsca, coś w stylu:

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 jest KDE4 lub linia komend.

Odpowiedzi (16)

200
200
200
2010-07-07 15:31:29 +0000

Ja zawsze używam ncdu. Jest to interaktywne i bardzo szybkie.

131
131
131
2012-03-06 19:56:10 +0000

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

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

Aby znaleźć 10 największych 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 wyświetla na wyjściu rozmiary plików czytelne dla człowieka. Największy plik jest wypisywany jako ostatni. Argumentem tail jest liczba wyników, które widzisz (tutaj 10 największych).

Istnieją dwie techniki obsługi spacji w nazwach plików. Pierwsza find -print0 | xargs -0 używa separatorów zerowych zamiast spacji, a druga xargs -I{} używa nowych linii zamiast spacji do kończenia 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
37
37
37
2009-07-21 07:19:02 +0000

Dla szybkiego podglądu:

du | sort -n

wylistuje wszystkie katalogi z największym ostatnim.

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

lub, ponownie, unikając zbędnego \u0026apos; :

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

wylicza wszystkie katalogi w bieżącym katalogu z największym na końcu.

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

Inne parametry do du są dostępne, jeśli chcemy śledzić dowiązania symboliczne (domyślnie nie śledzimy dowiązań symbolicznych) lub po prostu pokazać rozmiar zawartości katalogu z wyłączeniem podkatalogów, na przykład. du może nawet zawrzeć w liście datę i czas ostatniej zmiany dowolnego pliku w katalogu.

23
23
23
2009-07-24 04:26:50 +0000

Do większości rzeczy wolę narzędzia CLI, ale do korzystania z dysku, naprawdę lubię filelight . Prezentacja jest dla mnie bardziej intuicyjna niż jakiekolwiek inne narzędzie do zarządzania przestrzenią, które widziałem.

20
20
20
2013-02-18 04:35:03 +0000

Filelight jest lepszy dla użytkowników KDE, ale dla uzupełnienia (tytuł pytania jest ogólny) muszę wspomnieć, że Baobab jest zawarty w Ubuntu, aka Disk Usage Analyzer:

.

8
8
8
2009-07-22 10:00:12 +0000

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

Nie jestem pewien, czy to jest dokładnie to narzędzie KDE, którego nie chciałeś, ale myślę, że nadal powinno być wspomniane w pytaniu takim jak to. Jest dobre i wiele osób prawdopodobnie go nie zna - sam dowiedziałem się o nim dopiero niedawno.

5
5
5
2009-07-21 07:06:07 +0000

Kombinacja jest zawsze najlepszą sztuczką na Unixie.

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

Pokaże rozmiary katalogów w KB i posortuje je tak, aby największy z nich znalazł się na końcu.
Widok drzewa wymaga jednak trochę więcej paliwa… czy jest to naprawdę wymagane?

Zauważ, że to skanowanie jest zagnieżdżone w katalogach, więc policzy podkatalogi ponownie dla wyższych katalogów, a katalog bazowy . pokaże się na końcu jako całkowita suma wykorzystania.

Możesz jednak użyć kontroli głębokości na find, aby przeszukać na określoną głębokość.
I w ten sposób możesz się bardziej zaangażować w skanowanie… w zależności od tego, czego oczekujesz. Kontrola głębokości find z -maxdepth i -mindepth może ograniczyć się do określonej głębokości podkatalogu.


Oto wyrafinowana odmiana dla twojego problemu arg-too-long

find . -type d -exec du -sk {} \; | sort -n -k 1
3
3
3
2009-07-21 11:35:45 +0000

Podoba mi się gt5 . Możesz poruszać się po drzewie i otwierać podkatalogi, aby uzyskać więcej szczegółów. Do wyświetlania wyników używa przeglądarki internetowej w trybie tekstowym, takiej jak lynx. Zainstaluj elinks , aby uzyskać najlepsze wyniki.

2
2
2
2009-07-21 07:00:04 +0000

Chociaż nie daje ci zagnieżdżonego wyjścia w ten sposób, spróbuj du

du -h /path/to/dir/

Uruchomienie tego na moim folderze Dokumenty wypluwa 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 przez piping do sort

du /path/to/dir | sort -n
```.
1
1
1
2013-05-15 21:52:25 +0000

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

Więc moim ulubionym jest to:

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

A wyjście wygląda tak:

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
1
1
1
2012-09-06 05:27:20 +0000

Oto skrypt, który zrobi to za Ciebie automatycznie. http://www.thegeekscope.com/linux-script-to-find-largest-files/

Poniżej znajduje się przykładowy wynik działania 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%***

Możesz uznać ten skrypt za bardzo przydatny i użyteczny !

1
1
1
2014-05-29 03:39:47 +0000

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 przez sortowanie na podstawie rozmiaru plików za pomocą polecenia piped “sort -nr -k5”.

1
1
1
2015-04-10 12:07:49 +0000

Inną alternatywą jest agedu , który rozbija przestrzeń dyskową według czasu ostatniego dostępu, co ułatwia zlokalizowanie plików marnujących miejsce.

Działa on nawet na serwerze bez X Windows, serwując tymczasowe strony internetowe, dzięki czemu można zdalnie analizować wykorzystanie przestrzeni dyskowej za pomocą wykresów. Zakładając, że adres IP serwera to 192.168.1.101, możesz wpisać to w wierszu poleceń serwera

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

To drukuje nazwę użytkownika, hasło i adres URL, za pomocą którego można uzyskać dostęp do “GUI” i przeglądać wyniki. Kiedy skończysz, zakończ agedu z Ctrl+D na serwerze.

0
0
0
2010-07-07 11:05:40 +0000
du -chs /*

Pokaże ci listę katalogów głównych.

0
0
0
2013-08-18 12:36:57 +0000

Aby jeszcze trochę uzupełnić listę, dodaję mój ulubiony analizator użycia dysku, którym jest xdiskusage .

GUI przypomina mi kilka innych dobrych starych X-owych narzędzi, jest szybkie i nie nadęte, ale mimo to można łatwo poruszać się w hierarchii i ma kilka opcji wyświetlania:

$ xdiskusage /usr

.

0
0
0
2015-03-05 13:44:05 +0000

Spróbuj następującego one-linera (wyświetla top-20 największych plików w bieżącym katalogu):

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

lub o rozmiarach czytelnych dla człowieka:

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

Drugie polecenie, aby działało poprawnie na OSX/BSD (ponieważ sort nie ma -h), musisz zainstalować sort z coreutils.

Więc te aliasy są przydatne, aby mieć je w swoich 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'