Muszę uzyskać listę czytelnych dla człowieka wyników.
Nie du
ma jednak opcji „sortuj według rozmiaru”, a przesyłanie do sort
nie działa z flagą czytelną dla człowieka.
Na przykład uruchamianie:
du | sort -n -r
Zwraca posortowane użycie dysku według rozmiaru (malejąco):
du |sort -n -r
65108 .
61508 ./dir3
2056 ./dir4
1032 ./dir1
508 ./dir2
Jednak uruchomienie go z flagą czytelną dla człowieka nie sortuje poprawnie:
du -h | sort -n -r
508K ./dir2
64M .
61M ./dir3
2.1M ./dir4
1.1M ./dir1
Czy ktoś zna sposób sortowania du -h
według rozmiaru?
du
ale dodajesz -h dosort
polecenia. Możesz dodać,-rh
aby największe były pierwsze w pliku, w przeciwnym razie musisztail
zobaczyć kosmiczne świnie.Odpowiedzi:
Począwszy od wersji GNU coreutils 7.5 wydanej w sierpniu 2009 r.,
sort
Dopuszcza-h
parametr, który dopuszcza sufiksy numeryczne, takie jakdu -h
:Jeśli używasz systemu, który nie obsługuje
-h
, możesz zainstalować GNU Coreutils. Np. Na starszym Mac OS X:Z
sort
instrukcji :-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)
źródło
du -BM | sort -nr
jako obejście - jest wystarczająco czytelne dla ludzi i jest sortowane, jeśli ktoś utknie ze starszymi rdzeniami.du -hs * | gsort -h
du -BM
drukuje wszystko w megabajtach, więc plik o wielkości 168 KB byłby wyświetlany jako 0 MB. Chyba że istnieje jakaś inna rozbieżność wersji, o której nie wiem. Moja wersjadu
pokazuje tylko wartości całkowite megabajtów.źródło
@Douglas Leeder, jeszcze jedna odpowiedź: posortuj dane wyjściowe czytelne dla człowieka z du-h za pomocą innego narzędzia. Jak Perl!
Podziel na dwie linie, aby dopasować do wyświetlacza. Możesz użyć go w ten sposób lub uczynić z niego jedno-liniowego, będzie działał w obu kierunkach.
Wynik:
EDYCJA: Po kilku rundach golfa w PerlMonks końcowy wynik jest następujący:
źródło
stderr
ponieważdie
możesz ją zmienić, aby włączała sięstdout
?die
a,print
a przejdzie dostdout
. To tylko dwie kolejne postacie.Istnieje niezmiernie użyteczne narzędzie, którego używam, o nazwie ncdu, które zostało zaprojektowane do znajdowania tych irytujących folderów i plików o wysokim zużyciu dysku oraz ich usuwania. Jest oparty na konsoli, szybki i lekki, i ma pakiety we wszystkich głównych dystrybucjach.
źródło
du
, jeśli chcesz tylko zidentyfikować duże katalogi.źródło
du -k --total
, daje błąd na końcudu: cannot access 'total': No such file or directory
head
, dodając `| głowa -50` na końcu.O ile widzę, masz trzy opcje:
du
aby posortować przed wyświetleniem.sort
aby obsługiwać ludzkie rozmiary dla sortowania numerycznego.Możesz także robić
du -k
i żyć z rozmiarami w KiB.Dla opcji 3 możesz użyć następującego skryptu:
źródło
Też miałem ten problem i obecnie używam obejścia:
Nie spowoduje to wygenerowania skalowanych wartości, ale zawsze da rozmiar w megabajtach. To mniej niż idealne, ale dla mnie to lepsze niż nic (lub wyświetlanie rozmiaru w bajtach).
źródło
Znalazłem ten wpis gdzie indziej. Dlatego ten skrypt powłoki zrobi, co chcesz, bez wywoływania
du
wszystkiego dwa razy. Służyawk
do konwersji nieprzetworzonych bajtów na format czytelny dla człowieka. Oczywiście formatowanie jest nieco inne (wszystko jest drukowane z dokładnością do jednego miejsca po przecinku).Uruchomienie tego w moim
.vim
katalogu daje:(Mam nadzieję, że 3,6 mln schematów kolorów nie jest nadmierne).
źródło
Ta wersja używa
awk
do tworzenia dodatkowych kolumn dla kluczy sortowania. Dzwoni tylkodu
raz. Wynik powinien wyglądać dokładnie takdu
.Podzieliłem go na wiele linii, ale można go zrekombinować w jedną linijkę.
Wyjaśnienie:
Wypróbuj bez
cut
polecenia, aby zobaczyć, co robi.Oto wersja, która sortuje w skrypcie AWK i nie potrzebuje
cut
:źródło
du -sh *
wyświetlał tylko bezpośrednie pliki i katalogi bez rekurencyjnego zejścia.Oto przykład, który pokazuje katalogi w bardziej zwięzłej, podsumowanej formie. Obsługuje spacje w nazwach katalogów / plików.
źródło
sortuj pliki według rozmiaru w MB
źródło
Mam proste, ale przydatne opakowanie Pythona dla du o nazwie dutop . Zauważ, że my (opiekunowie coreutils) rozważamy dodanie funkcji sortowania w celu bezpośredniego sortowania wyników „ludzkich”.
źródło
sort
flaga)Mam jeszcze jeden:
Zaczynam lubić Perla. Być może będziesz musiał zrobić
pierwszy. Do wszystkich hakerów Perla: Tak, wiem, że część sortowania można również wykonać w Perlu. Prawdopodobnie też część du.
źródło
Fragment ten został bezwstydnie wciągnięty w „Jean-Pierre” z http://www.unix.com/shell-programming-scripting/32555-du-h-sort.html . Czy jest sposób, w jaki mogę go lepiej przypisać?
źródło
23423423432423
Użyj flagi „-g”
A mój katalog / usr / local tworzy dane wyjściowe w następujący sposób:
źródło
Inny:
źródło
Oto prosta metoda, której używam, bardzo niskie zużycie zasobów i zapewnia to, czego potrzebujesz:
źródło
Znaleziono ten on-line ... wydaje się działać OK
źródło
Nauczyłem się awk od wymyślania tego przykładu wczoraj. Zajęło to trochę czasu, ale była świetna zabawa i nauczyłem się korzystać z awk.
Działa tylko du raz i ma wyjście bardzo podobne do du-h
Pokazuje liczby poniżej 10 z jednym miejscem po przecinku.
źródło
du -cka --max-depth = 1 / var / log | sort -rn | głowa -10 | awk '{print (1 $) / 1024, "MB", 2 $'}
źródło
Jeśli potrzebujesz obsługiwać spacje, możesz użyć następujących
Dodatkowa instrukcja sed pomoże złagodzić problemy z folderami o nazwach takich jak obsługa aplikacji
źródło
Voilà:
źródło
http://dev.yorhel.nl/ncdu
polecenie: ncdu
Nawigacja w katalogu, sortowanie (nazwa i rozmiar), tworzenie wykresów, czytelność dla człowieka itp.
źródło
Inne
awk
rozwiązanie -źródło
Korzystałem z rozwiązania dostarczonego przez @ptman, ale ostatnia zmiana serwera sprawiła, że nie jest już wykonalny. Zamiast tego używam następującego skryptu bash:
źródło
du -d 1
Składnia BSD jest obsługiwana przez GNU du od czasu wydania coreutils 8.6 w 2010 r. (Chociaż jego pierwsza dostępność Red Hat to RHEL 7 w 2014 r.), Więc nie jest już potrzebny--maxdepth=1
. I tylko dowiedział się o tym niedawno sam.źródło
Tutaj jest wiele odpowiedzi, z których wiele jest duplikatami. Widzę trzy trendy: przepuszczanie drugiego wywołania du, używanie skomplikowanego kodu powłoki / awk i używanie innych języków.
Oto rozwiązanie zgodne z POSIX, wykorzystujące du i awk, które powinno działać na każdym systemie.
Podjąłem nieco inne podejście, dodając,
-x
aby upewnić się, że pozostajemy w tym samym systemie plików (potrzebuję tej operacji tylko wtedy, gdy brakuje mi miejsca na dysku, więc dlaczego usuwamy rzeczy, które zamontowałem w tym drzewie FS lub przeniosłem i symlinked back?) i wyświetlanie stałych jednostek, aby ułatwić wizualną analizę. W takim przypadku zazwyczaj nie sortuję, aby lepiej widzieć strukturę hierarchiczną.(Ponieważ jest to spójne jednostki, możesz następnie dołączyć,
| sort -n
jeśli naprawdę chcesz posortować wyniki).Spowoduje to odfiltrowanie dowolnego katalogu, którego (skumulowana) zawartość nie przekracza 512 MB, a następnie wyświetla rozmiary w gigabajtach. Standardowo stosuje du 512-bajtowy rozmiar bloku (czyli stan awk 2 20 bloków jest 512 oraz jej 2 21 dzielnik przetwarza jednostki z GB - można było skorzystać
du -kx
z$1 > 512*1024
is/1024^2
do bardziej czytelnej dla człowieka). Wewnątrz warunku awk ustawiamys
rozmiar, abyśmy mogli go usunąć z linii ($0
). Zachowuje to separator (zwinięty do pojedynczej spacji), więc finał%s
reprezentuje spację, a następnie nazwę zagregowanego katalogu.%7s
wyrównuje zaokrąglony%.2f
rozmiar GB (zwiększ,%8s
jeśli masz> 10 TB).W przeciwieństwie do większości rozwiązań tutaj, to poprawnie obsługuje katalogi ze spacjami w nazwach (chociaż każde rozwiązanie, w tym jedno, będzie źle traktować nazwy katalogów zawierające podziały wierszy).
źródło
Przynajmniej w przypadku zwykłych narzędzi będzie to trudne ze względu na format, w jakim znajdują się liczby czytelne dla człowieka (zauważ, że sort wykonuje tutaj „dobrą robotę”, ponieważ sortuje liczby - 508, 64, 61, 2, 2 - it po prostu nie można sortować liczb zmiennoprzecinkowych za pomocą dodatkowego mnożnika).
Spróbowałbym odwrotnie - użyj danych wyjściowych z "du | sort -n -r", a następnie przekonwertuj liczby na format czytelny dla człowieka za pomocą jakiegoś skryptu lub programu.
źródło
Możesz spróbować:
Mam nadzieję, że to pomaga.
źródło
xargs
więc ten formularz był konieczny. Jednak w przypadku plików ze spacjami należy ustawić IFS:IFS=$'\n'
źródło