Jak sortujesz du -sh /dir/*
według rozmiaru? Czytam jedną stronę, która mówi o użyciu, | sort -n
ale to oczywiście nie w porządku. Oto przykład, który jest zły.
[~]# du -sh /var/* | sort -n
0 /var/mail
1.2M /var/www
1.8M /var/tmp
1.9G /var/named
2.9M /var/run
4.1G /var/log
8.0K /var/account
8.0K /var/crash
8.0K /var/cvs
8.0K /var/games
8.0K /var/local
8.0K /var/nis
8.0K /var/opt
8.0K /var/preserve
8.0K /var/racoon
12K /var/aquota.user
12K /var/portsentry
16K /var/ftp
16K /var/quota.user
20K /var/yp
24K /var/db
28K /var/empty
32K /var/lock
84K /var/profiles
224M /var/netenberg
235M /var/cpanel
245M /var/cache
620M /var/lib
748K /var/spool
command-line
text-processing
disk-usage
sort
units
ksenoterracid
źródło
źródło
sort -h
działała dla mnie w Ubuntu 16.04 LTS w sierpniu 2017 r. Najpierw znajduję zamontowany dysk przezcd /mnt
(zamontowany przez UUID w fstab). Potem robię,du >~/dumnt.out
asort -h ~/dumnt.out >~/dumntsort.out
potem mogę zrobić `tail ~ / dumntsort.out, aby zobaczyć największe kosmiczne świnie.Odpowiedzi:
Jeśli masz jądra GNU (wspólne w większości dystrybucji Linuksa), możesz użyć
Ta
-h
opcja mówi,sort
że dane wejściowe mają format czytelny dla człowieka (liczba z jednostką; 1024, dzięki czemu 1023 jest uważane za mniej niż 1 KB, co się zgadza z tym, codu -h
robi GNU ).Ta funkcja została dodana do GNU Core Utilities 7.5 w sierpniu 2009 roku .
źródło
-r
do sortowania, jeśli chcesz duże na górzecoreutils
za pośrednictwembrew
i dodać folder bin doPATH
w swoim rc pliku i-h
powinny być dostępne.tail
polecenia, aby zobaczyć wieprze.Spróbuj użyć flagi -k, aby policzyć 1K bloków zamiast używania czytelnego dla człowieka. Następnie masz wspólną jednostkę i możesz łatwo wykonać sortowanie numeryczne.
Nie potrzebujesz wyraźnie jednostek ludzkich, ale jeśli tak, istnieje wiele sposobów, aby to zrobić. Wydaje się, że wielu używa powyższej techniki bloków 1K, a następnie wykonuje drugie połączenie do du.
https://serverfault.com/questions/62411/how-can-i-sort-du-h-output-by-size
Jeśli chcesz zobaczyć dodane jednostki KB, użyj:
źródło
Jeśli nie masz najnowszej wersji jądra GNU , możesz wywoływać
du
bez-h
uzyskiwania sortowalnych danych wyjściowych i produkować przyjazne dla człowieka dane wyjściowe z niewielkim późniejszym przetwarzaniem. Ma to tę zaletę, że działa, nawet jeśli twoja wersjadu
nie ma-h
flagi.Jeśli chcesz sufiksów SI (tj. Wielokrotności 1000 zamiast 1024), zmień 1024 na 1000 w
while
treści pętli. (Należy pamiętać, że 1000 w stanie jest przeznaczone, aby uzyskać np.1M
Zamiast1000k
.)Jeśli masz
du
opcję wyświetlania rozmiarów w bajtach (np.-b
Lub-B 1
- zauważ, że może to mieć efekt uboczny liczenia rzeczywistych rozmiarów plików, a nie użycia dysku), dodaj spację na początkus
(tj.s=" kMGTEPYZ";
) Lub dodajif (x<1000) {return x} else {x/=1024}
na początkuhuman
funkcja.Wyświetlanie cyfry dziesiętnej dla liczb z zakresu 1–10 pozostawia się czytelnikowi jako ćwiczenie.
źródło
Jeśli nie masz,
sort -h
możesz to zrobić:Pobiera listę du, oddziela sufiks i sortuje według tego. Ponieważ nie ma przyrostka dla <1K, pierwszy sed dodaje B (dla bajtu). Drugi sed dodaje separator między cyfrą a sufiksem. Trzeci sed przekształca G na Z, tak że jest większy niż M; jeśli masz pliki terabajtowe, musisz przekonwertować G na Y i T na Z. Na koniec sortujemy według dwóch kolumn, a następnie zastępujemy sufiks G.
źródło
W systemie OS X możesz zainstalować niezbędne coreutils za pośrednictwem Homebrew :
Z tym będziesz mieć
gsort
, który obejmuje-h
parametr wiersza poleceń.źródło
Ten mały skrypt Perla załatwia sprawę. Zapisz go jako
duh
(lub cokolwiek chcesz) i zadzwońduh /dir/*
źródło
Ponieważ Mac OS X nie ma takiej
-h
opcjisort
, próbowałem i uczyłem się,sed
aawk
za pierwszą próbą:to długa linia. Po rozwinięciu jest to:
Wypróbowałem to na Mac OS X Mavericks, Yosemite, Ubuntu 2014-04 z
awk
domyślnymawk
(czylinawk
dlatego, że oba wskazująawk
i ) lub gawk, i wszystkie działały.nawk
/usr/bin/mawk
Oto próbka danych wyjściowych na komputerze Mac:
zamiast tego
du -sk *
widziałem w odpowiedzi @ Stefana, gdzie wyświetlana jest również suma całkowita, i bez przechodzenia przez punkt montowania systemu plików, za pomocądu -skcx *
źródło
Oto, czego używam na Ubuntu 10.04, CentOS 5.5, FreeBSD i Mac OS X.
Zapożyczyłem pomysł z www.geekology.co.za/ i earthinfo.org , a także z niesławnych kaczek z „Linux Server Hacks” O'Reilly. Nadal dostosowuję go do moich potrzeb. To wciąż jest w toku (jak w tym dniu pracowałem nad tym rano w pociągu.):
Oto wynik:
źródło
du -cks -x *
? (z gwiazdką)ducks
,chmod a+x ducks
a następnie użyj go,./ducks
aby go uruchomić? Następnie widzę tylko całkowite użycie dysku, zarówno w systemie Mac OS X, jak i Ubuntu 2014-10. Próbowałem też wprowadzićducks() { ...}
definicję,.bashrc
a następnie użyć,ducks
aby ją uruchomić, i to samo na Mac OS X, zobacz tylko wielką sumęZaszalej z tym skryptem -
źródło
W przypadku braku GNU
sort -h
powinno to działać w większości środowisk UNIX:źródło
Ten obsługuje nazwy plików z białymi znakami lub apostrofami i działa w systemach, które nie obsługują
xargs -d
lubsort -h
:Co skutkuje w:
źródło
To posortuje dane wyjściowe w malejącym porządku według wielkości:
To posortuje dane wyjściowe w porządku rosnącym według wielkości:
PS: można tego użyć do sortowania według dowolnej kolumny, ale wartości tej kolumny powinny być w tym samym formacie
źródło
sort -k1rn
jest równoważnasort -rn
i po prostu sortuje numerycznie na podstawie początkowej sekwencji cyfr dziesiętnych w każdym wierszu. Nie rozumie zmiennoprzecinkowych, a ona nie rozumiek
,M
,G
... przyrostków. 10,1k będzie uważane za większe niż 1,23GTestowane na Solarisie!
Spowoduje to rekurencyjne wyświetlanie wszystkich rozmiarów katalogów, na dole będzie największy katalog w gigabajtach, a na górze najmniejszy w kilobajtach.
źródło
Największy jest na dole:
źródło
Komenda:
du -ah . | sort -k1 -h | tail -n 50
Wyjaśnienie:
du -ah .
sort -k1 -h | tail -n 50
źródło
Aby posortować według rozmiaru w MB
źródło
du -h
posortować dane wyjściowe (dane czytelne dla człowieka) posortowane numerycznie. Nie udzielasz na to odpowiedzi. Możesz także połączyć swoje konto UNIX-SE z innymi kontami na innych stronach SE.Ten skrypt jest jeszcze łatwiejszy:
źródło
dla OSX
źródło
-k
prostu anulowaniem,-h
a jeśli tak, to w jaki sposób zapewnia to czytelny dla człowieka wynik wymagany przez PO.