Czy ls
w Unixie można używać do wyliczania całkowitego rozmiaru podkatalogu i całej jego zawartości, w przeciwieństwie do zwykłego 4K
(zakładam, że) samego pliku katalogu?
total 12K
drwxrwxr-x 6 *** *** 4.0K 2009-06-19 10:10 branches
drwxrwxr-x 13 *** *** 4.0K 2009-06-19 10:52 tags
drwxrwxr-x 16 *** *** 4.0K 2009-06-19 10:02 trunk
Po przeszukaniu stron podręcznika, wychodzę pusty.
alias ducks='du -cksh * | sort -hr | head -n 15'
Odpowiedzi:
Wypróbuj coś takiego:
krótka wersja:
Wyjaśnienie:
du
: D isk U sage-s
: Wyświetla podsumowanie dla każdego określonego pliku. (Odpowiednik-d 0
)-h
: Wyjście „czytelne dla człowieka”. Stosowanie sufiksów jednostka: B YTE, K ibibyte (KiB) M ebibyte (MIB), G ibibyte (listwy), T ebibyte (TiB) i P ebibyte (PIB). (BASE2)źródło
*(D)
do dopasowania ukrytych ( d ot) plików wraz ze zwykłymi plikami. Korzystając z bash, możesz użyć,* .[!.]*
aby dopasować oba.du -sch * .[!.]* | sort -rh
jest świetne (pokaż posortowane dane wyjściowe) Na Mac do:brew install coreutils
a następniedu -sch * .[!.]* | gsort -rh
du -sk * | sort -n
posortuje foldery według rozmiaru. Pomocny, gdy chcesz wyczyścić przestrzeń ..źródło
| tail -r
Najpierw dodaj sortowanie według największego.sort -rn
sortuje rzeczy w odwrotnej kolejności numerycznej.sort -rn | head -n 10
pokaże tylko kilka najlepszych, jeśli jest to interesujące.sort -rh
będzie działał ładnie,du -cksh *
ponieważ sortuje jednostki czytelne dla ludzi.du -ksh | sort -rn
jest takie samo jakdu -cksh | sort -rn
. Tak samo jakdu -ksh
to samodu -cksh
.Zostanie to wyświetlone w formacie czytelnym dla człowieka.
źródło
sort -h
tutaj: gnu.org/software/coreutils/manual/... Jest to szczególnie tam do sortowania103K
,102M
,1.1G
itd. To powinien być dostępny na wiele systemów w dzisiejszych czasach, ale nie wszystkie.du -sh * | sort -rh
(-r do listy większych folderów jako pierwszy)du -sh $(ls -A) | sort -h
Aby wyświetlić listę największych katalogów z bieżącego katalogu w formacie czytelnym dla człowieka:
du -sh * | sort -hr
Lepszym sposobem na ograniczenie liczby wierszy może być
du -sh * | sort -hr | head -n10
Gdzie można zwiększyć sufiks
-n
flagi, aby ograniczyć liczbę wymienionych wierszyPróba:
Ułatwia to czytanie :)
źródło
Aby wyświetlić go w
ls -lh
formacie, użyj:Wyjaśnienie kodu awk:
Przykładowe dane wyjściowe:
źródło
--color=no
sort --key=5,5h
sortowania „jednostek czytelnych dla człowieka” z piątej kolumnysort: stray character in field spec: invalid field specification
5,5h ''. Czasami naprawdę nienawidzę macs = \Polecenie, które chcesz, to „du -sk” du = "użycie dysku"
Flaga -k podaje dane wyjściowe w kilobajtach zamiast domyślnych sektorów dysku (bloki 512-bajtowe).
Flaga -s wyświetla tylko rzeczy w katalogu najwyższego poziomu (domyślnie w bieżącym katalogu lub w katalogu określonym w wierszu poleceń). Dziwne, że du ma pod tym względem przeciwne zachowanie ls. Domyślnie du poda rekurencyjnie wykorzystanie miejsca na dysku w każdym podkatalogu. W przeciwieństwie do tego, ls da pliki listy tylko w określonym katalogu. (ls -R daje ci rekurencyjne zachowanie).
źródło
Umieść tę deklarację funkcji powłoki w skryptach inicjujących powłokę:
Nazwałem to,
duls
ponieważ pokazuje dane wyjściowe zarównodu
ils
(w tej kolejności):Wyjaśnienie:
paste
Narzędzie tworzy kolumny z jego wejściem w zależności od specyfikacji, które ją podać. Biorąc pod uwagę dwa pliki wejściowe, umieszcza je obok siebie, z tabulatorem jako separatorem.Dajemy mu wynik
du -hs -- "$@" | cut -f1
jako pierwszy plik (naprawdę strumień wejściowy), a wynikls -ld -- "$@"
jako drugi plik.W funkcji
"$@"
przejdzie do listy wszystkich argumentów wiersza poleceń, każdy w podwójnych cudzysłowach. Zrozumie zatem znaki globowania i nazwy ścieżek ze spacjami itp.Podwójne minusy (
--
) sygnalizują koniec opcji wiersza poleceń dodu
ils
. Bez nich powiedzenieduls -l
by się myliło,du
a każda opcja,du
którals
tego nie zrobiłaby, myliłabyls
(a opcje występujące w obu narzędziach mogą nie oznaczać tego samego i byłby to niezły bałagan).Po
cut
podu
prostu wycina pierwszą kolumnędu -hs
wyniku (rozmiary).Postanowiłem umieścić dane
du
wyjściowe po lewej stronie, w przeciwnym razie musiałbym zarządzać chwiejną prawą kolumną (ze względu na różne długości nazw plików).Polecenie nie akceptuje flag wiersza poleceń.
Zostało to przetestowane zarówno w, jak
bash
i wksh93
. To nie będzie działać/bin/sh
.źródło
Zawsze używam zamiast tego
du -sk
(-k
flaga pokazująca rozmiar pliku w kilobajtach).źródło
źródło
ncdu
ncursesdu
To niesamowite narzędzie CLI pozwala interaktywnie znajdować duże pliki i katalogi.
Na przykład z wnętrza drzewa znanego projektu wykonujemy:
Wynik jest następujący:
Następnie wchodzę w dół i bezpośrednio na klawiaturze, aby przejść do
/drivers
folderu, i widzę:ncdu
rozmiar pliku oblicza rekurencyjnie tylko raz podczas uruchamiania dla całego drzewa, więc jest wydajny.„Całkowite użycie dysku” w porównaniu z „Pozornym rozmiarem” jest analogiczne do tego
du
i wyjaśniłem to na: dlaczego wyjście „du” często tak różni się od „du -b”Strona główna projektu: https://dev.yorhel.nl/ncdu
Powiązane pytania:
Testowane w Ubuntu 16.04.
ncdu
użycie nieinteraktywneKolejną fajną cechą
ncdu
jest to, że możesz najpierw zrzucić rozmiary w formacie JSON, a następnie użyć ich ponownie.Na przykład, aby wygenerować uruchomienie pliku:
a następnie sprawdź to interaktywnie za pomocą:
Jest to bardzo przydatne, jeśli masz do czynienia z bardzo dużym i wolnym systemem plików, takim jak NFS.
W ten sposób możesz najpierw wyeksportować tylko raz, co może potrwać kilka godzin, a następnie przeglądać pliki, wychodzić, przeglądać ponownie itp.
Format wyjściowy to po prostu JSON, więc łatwo jest go ponownie użyć z innymi programami, np .:
ujawnia prostą strukturę danych drzewa katalogów:
Testowane w Ubuntu 18.04.
źródło
du -sch * w tym samym katalogu.
źródło
To mi się podoba
aktualizacja : Nie podobał mi się poprzedni, ponieważ nie wyświetlał plików w bieżącym katalogu, wyświetlał tylko katalogi.
Przykładowe dane wyjściowe dla
/var
Ubuntu:sudo du -hDaxd1 /var | sort -h | tail -n10
źródło
To są świetne sugestie, ale korzystam z nich:
-ksh
upewnia się, że pliki i foldery są wymienione w formacie czytelnym dla człowieka oraz w megabajtach, kilobajtach itp. Następnie sortujesz je numerycznie i odwracasz sortowanie, aby na pierwszym miejscu były większe.Jedynym minusem tego polecenia jest to, że komputer nie wie, że Gigabyte jest większy niż Megabyte, więc sortuje tylko według liczb i często można znaleźć takie listy:
Uważaj tylko na jednostkę.
To polecenie działa również na komputerze Mac (
sort -h
na przykład nie).źródło
-h
flagę zdu
polecenia, zmniejszysz tę wadę-h
zamiast-n
sortowania.du ma jeszcze jedną przydatną opcję:
-S, --separate-dirs
informowanie du, że nie zawiera rozmiaru podkatalogów - przydatne w niektórych przypadkach.Przykład 1 - pokazuje tylko rozmiary plików w katalogu:
Przykład 2 - pokazuje rozmiary plików i podkatalogów w katalogu:
źródło
du -sm * | sort -nr
Wyjście według rozmiaru
źródło
spójrz na to
du
polecenieźródło
tylko ostrzeżenie, jeśli chcesz porównać rozmiary plików. du produkuje różne wyniki w zależności od systemu plików, rozmiaru bloku, ...
Może się zdarzyć, że rozmiar plików jest inny, np. Porównanie tego samego katalogu na lokalnym dysku twardym i urządzeniu pamięci masowej USB. Używam następującego skryptu, w tym ls, aby podsumować rozmiar katalogu. Wynik w bajtach z uwzględnieniem wszystkich podkatalogów.
źródło
Aby rekurencyjnie wyświetlać rozmiary plików i podkatalogów bieżącego katalogu:
Aby wyświetlić informacje o tym samym rozmiarze, ale bez rekurencyjnego drukowania podkatalogów (co może być ogromną listą), wystarczy użyć opcji --max-depth :
źródło
Przez jakiś czas korzystałem z Nautilus (na pulpicie Gnome na RHEL 6.0) do usuwania plików z mojego folderu domowego zamiast używania
rm
polecenia w bash. W rezultacie całkowity rozmiar pokazany przeznie użyłem sumy użycia dysku każdego podkatalogu, kiedy go użyłem
Minęło trochę czasu, zanim zdałem sobie sprawę, że Nautilus wysyła usunięte pliki do swojego folderu Kosz, a ten folder nie jest wymieniony w
du -sh *
poleceniu. Chciałem się tym podzielić, na wypadek, gdyby ktoś napotkał ten sam problem.źródło
Hmm, najlepszym sposobem jest użycie tego polecenia:
Wtedy będziesz mógł uzyskać foldery we wszystkich rozmiarach na całym serwerze. Łatwo Ci pomóc znaleźć największe rozmiary.
źródło
Następujące jest łatwe do zapamiętania
https://explainshell.com/explain?cmd=ls+-ltrapR
źródło
Jeśli chcesz mieć większą kontrolę nad
size
katalogiem, na którym chcesz wyświetlić katalogi, możesz użyć przełącznikathreshold
(-t
) jak w:du
-d
isku
sageh
- format czytelny dla człowiekat
- wielkość progowaW tym miejscu chcemy wymienić wszystkie katalogi o rozmiarze większym niż 1 GB.
Objaśnienie :
Jednostki opisane w wiki są następujące:
źródło
Natknąłem się na problem podobny do opisanego przez Martina Wilde'a, w moim przypadku porównując ten sam katalog na dwóch różnych serwerach po dublowaniu za pomocą rsync.
Zamiast używać skryptu dodałem
-b
flagę,du
która zlicza rozmiar w bajtach i, o ile jestem w stanie ustalić, wyeliminowałem różnice na dwóch serwerach. Nadal możesz użyć,-s -h
aby uzyskać zrozumiały wynik.źródło
umieść w skrypcie inicjującym, takim jak .bashrc ... dostosuj def w razie potrzeby.
źródło
wpisz „ls -ltrh / ścieżka_do_katalogu”
źródło