Używanie ls do wyświetlania katalogów i ich całkowitych rozmiarów
Czy jest możliwe użycie ls
w Uniksie do wyświetlenia całkowitej wielkości podkatalogu i całej jego Zawartości w przeciwieństwie do zwykłego pliku 4K, który (zakładam) jest tylko plikiem katalogu? I. E.
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 pojawiam się pusta.
22 answers
Spróbuj czegoś takiego:
du -sh *
Skrócona wersja:
du --summary --human-readable *
Wyjaśnienie:
du
: D isk U sage
-s
: wyświetla podsumowanie dla każdego określonego pliku. (Odpowiednik -d 0
)
-h
: "czytelny dla człowieka". Użyj przyrostków jednostkowych: B yte, K ibibyte (KiB), Mebibyte (MiB), Gibibyte (GiB), Tebibyte (TiB) i P ebibyte (PiB). (BASE2)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-17 13:42:25
du -sk * | sort -n
posortuje foldery według rozmiaru. Pomocny przy poszukiwaniu miejsca..
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-09 09:08:11
du -sh * | sort -h
Zostanie to wyświetlone w formacie czytelnym dla człowieka.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-09 06:33:04
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ć przyrostek flagi -n
, aby ograniczyć liczbę wierszy na liście
Próbka:
[~]$ du -sh * | sort -hr
48M app
11M lib
6.7M Vendor
1.1M composer.phar
488K phpcs.phar
488K phpcbf.phar
72K doc
16K nbproject
8.0K composer.lock
4.0K README.md
To sprawia, że wygodniej się czyta :)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-01 10:42:18
Aby wyświetlić go w formacie ls -lh
, Użyj:
(du -sh ./*; ls -lh --color=no) | awk '{ if($1 == "total") {X = 1} else if (!X) {SIZES[$2] = $1} else { sub($5 "[ ]*", sprintf("%-7s ", SIZES["./" $9]), $0); print $0} }'
Kod Awk objaśniony:
if($1 == "total") { // Set X when start of ls is detected
X = 1
} else if (!X) { // Until X is set, collect the sizes from `du`
SIZES[$2] = $1
} else {
// Replace the size on current current line (with alignment)
sub($5 "[ ]*", sprintf("%-7s ", SIZES["./" $9]), $0);
print $0
}
Przykładowe wyjście:
drwxr-xr-x 2 root root 4.0K Feb 12 16:43 cgi-bin
drwxrws--- 6 root www 20M Feb 18 11:07 document_root
drwxr-xr-x 3 root root 1.3M Feb 18 00:18 icons
drwxrwsr-x 2 localusr www 8.0K Dec 27 01:23 passwd
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-24 22:42:32
Żądaną komendą jest 'du-sk' du = "użycie dysku"
Flaga-k podaje dane wyjściowe w kilobajtach, zamiast domyślnych sektorów dysków (512-bajtowych bloków).
Flaga-s wyświetli tylko listę rzeczy w katalogu najwyższego poziomu (tj. domyślnie bieżący katalog lub katalog podany w wierszu poleceń). To dziwne, że du ma w tym względzie odwrotne zachowanie niż ls. Domyślnie du poda rekurencyjnie użycie dysku każdego podkatalogu. In contrast, ls poda tylko pliki list w podanym katalogu. (ls-R daje zachowanie rekurencyjne.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-22 21:29:17
Umieść tę deklarację funkcji powłoki w skryptach inicjalizacyjnych powłoki:
function duls {
paste <( du -hs -- "$@" | cut -f1 ) <( ls -ld -- "$@" )
}
Nazwałem go duls
, ponieważ pokazuje wyjście zarówno du
, jak i ls
(w tej kolejności):
$ duls
210M drwxr-xr-x 21 kk staff 714 Jun 15 09:32 .
$ duls *
36K -rw-r--r-- 1 kk staff 35147 Jun 9 16:03 COPYING
8.0K -rw-r--r-- 1 kk staff 6962 Jun 9 16:03 INSTALL
28K -rw-r--r-- 1 kk staff 24816 Jun 10 13:26 Makefile
4.0K -rw-r--r-- 1 kk staff 75 Jun 9 16:03 Makefile.am
24K -rw-r--r-- 1 kk staff 24473 Jun 10 13:26 Makefile.in
4.0K -rw-r--r-- 1 kk staff 1689 Jun 9 16:03 README
120K -rw-r--r-- 1 kk staff 121585 Jun 10 13:26 aclocal.m4
684K drwxr-xr-x 7 kk staff 238 Jun 10 13:26 autom4te.cache
128K drwxr-xr-x 8 kk staff 272 Jun 9 16:03 build
60K -rw-r--r-- 1 kk staff 60083 Jun 10 13:26 config.log
36K -rwxr-xr-x 1 kk staff 34716 Jun 10 13:26 config.status
264K -rwxr-xr-x 1 kk staff 266637 Jun 10 13:26 configure
8.0K -rw-r--r-- 1 kk staff 4280 Jun 10 13:25 configure.ac
7.0M drwxr-xr-x 8 kk staff 272 Jun 10 13:26 doc
2.3M drwxr-xr-x 28 kk staff 952 Jun 10 13:26 examples
6.2M -rw-r--r-- 1 kk staff 6505797 Jun 15 09:32 mrbayes-3.2.7-dev.tar.gz
11M drwxr-xr-x 42 kk staff 1428 Jun 10 13:26 src
$ duls doc
7.0M drwxr-xr-x 8 kk staff 272 Jun 10 13:26 doc
$ duls [bM]*
28K -rw-r--r-- 1 kk staff 24816 Jun 10 13:26 Makefile
4.0K -rw-r--r-- 1 kk staff 75 Jun 9 16:03 Makefile.am
24K -rw-r--r-- 1 kk staff 24473 Jun 10 13:26 Makefile.in
128K drwxr-xr-x 8 kk staff 272 Jun 9 16:03 build
Wyjaśnienie:
Narzędzie paste
tworzy kolumny ze swojego wejścia zgodnie z podaną specyfikacją. Biorąc pod uwagę dwa pliki wejściowe, umieszcza je obok siebie, z tabulatorem jako separatorem.
Dajemy mu wyjście du -hs -- "$@" | cut -f1
jako pierwszy plik (strumień wejściowy) i wyjście ls -ld -- "$@"
jako drugi plik.
W funkcji, "$@"
będzie oceniać Do Listy wszystkich argumentów linii poleceń, każdy w podwójnych cudzysłowach. Będzie więc rozumiał globulujące znaki i nazwy ścieżek ze spacjami itp.
Podwójne minusy (--
) sygnalizują koniec opcji linii poleceń na du
i ls
. Bez nich powiedzenie duls -l
myliłoby du
, a każda opcja dla du
, której nie ma ls
, myliłaby ls
(i opcje, które istnieją w obu narzędzia mogą nie oznaczać tego samego, a to byłby niezły bałagan).
cut
po du
po prostu wycina pierwszą kolumnę wyjścia du -hs
(rozmiary).
Postanowiłem umieścić wyjście du
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 znaczników linii poleceń.
To zostało przetestowane zarówno wbash
, jak i w ksh93
. Nie będzie działać z /bin/sh
.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-25 20:42:08
Zawsze używam du -sk
(-k
zamiast tego flaga pokazująca Rozmiar pliku w kilobajtach).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-26 17:20:18
du -h --max-depth=1 . | sort -n -r
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-22 00:59:42
Du-sch * w tym samym katalogu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-04 05:38:16
Spójrz na du
polecenie to
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-19 17:30:09
To są świetne sugestie, ale ta, której używam, to:
du -ksh * | sort -n -r
-ksh
zapewnia, że pliki i foldery są wyświetlane w formacie czytelnym dla człowieka oraz w megabajtach, kilobajtach itp. Następnie sortujesz je numerycznie i odwracasz sortowanie, aby najpierw stawiało większe.
Jedynym minusem tego polecenia jest to, że komputer nie wie, że gigabajt jest większy niż megabajt, więc będzie sortować tylko po numerach i często znajdziesz takie listy:
120K
12M
4G
Po prostu bądź uważaj na jednostkę.
To polecenie działa również na komputerze Mac(podczas gdy sort -h
nie działa na przykład).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-28 09:31:36
du -S
du mają jeszcze jedną użyteczną opcję: -S, --separate-dirs
mówienie du Nie uwzględniaj rozmiaru podkatalogów - przydatne przy niektórych okazjach.
Przykład 1-pokazuje tylko Rozmiar pliku w katalogu:
du -Sh *
3,1G 10/CR2
280M 10
Przykład 2-pokazuje rozmiary plików i podkatalogi w katalogu:
du -h *
3,1G 10/CR2
3,4G 10
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-26 17:24:49
Du-sm * / sort-nr
Wyjście według rozmiaru
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-03 10:09:47
This is one I like
update: poprzednia nie podobała mi się, ponieważ nie pokazywała plików w bieżącym katalogu, tylko wymieniała katalogi.
Przykładowe wyjście dla /var
na ubuntu:
sudo du -hDaxd1 /var | sort -h | tail -n10
4.0K /var/lock
4.0K /var/run
4.0K /var/www
12K /var/spool
3.7M /var/backups
33M /var/log
45M /var/webmin
231M /var/cache
1.4G /var/lib
1.7G /var
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-30 23:24:33
Tylko ostrzeżenie, jeśli chcesz porównać rozmiary plików. du generuje różne wyniki w zależności od systemu plików, rozmiaru bloku,... .
Może się zdarzyć, że rozmiar plików będzie inny, np. porównując ten sam katalog na lokalnym dysku twardym i urządzenie pamięci masowej USB. Używam następującego skryptu, w tym ls, aby podsumować rozmiar katalogu. Wynik w bajtach biorąc pod uwagę wszystkie podkatalogi.
echo "[GetFileSize.sh] target directory: \"$1\""
iRetValue=0
uiLength=$(expr length "$1")
if [ $uiLength -lt 2 ]; then
echo "[GetFileSize.sh] invalid target directory: \"$1\" - exiting!"
iRetValue=-1
else
echo "[GetFileSize.sh] computing size of files..."
# use ls to compute total size of all files - skip directories as they may
# show different sizes, depending on block size of target disk / file system
uiTotalSize=$(ls -l -R $1 | grep -v ^d | awk '{total+=$5;} END {print total;}')
uiLength=$(expr length "$uiTotalSize")
if [ $uiLength -lt 1 ]; then
uiTotalSize=0
fi
echo -e "[GetFileSize.sh] total target file size: \"$uiTotalSize\""
fi
exit "$iRetValue"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-05 11:37:35
Aby wyświetlić rekurencyjnie rozmiary plików i podkatalogów bieżącego katalogu:
du -h .
Aby wyświetlić informacje o tym samym rozmiarze ale bez rekurencyjnego drukowania ich podkatalogów (które mogą być ogromną listą), wystarczy użyć opcji -- max-depth:
du -h --max-depth=1 .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-11 12:27:25
Przez jakiś czas używałem Nautilusa (na pulpicie Gnome w RHEL 6.0), aby usunąć Pliki z mojego folderu domowego zamiast używać polecenia rm
w bash. W rezultacie całkowity rozmiar pokazany przez
du -sh
Nie pasowała suma użycia dysku każdego podkatalogu, gdy użyłem
du -sh *
Zajęło mi trochę czasu, aby uświadomić sobie, że Nautilus wysyła usunięte pliki do swojego folderu Kosza, a tego folderu nie ma na liście w Komendzie du -sh *
. Chciałem się tym podzielić, na wypadek, gdyby ktoś napotkał ten sam problem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-25 14:55:09
Hmm, najlepszym sposobem jest użycie tego polecenia:
du -h -x / | sort -hr >> /home/log_size.txt
Wtedy będziesz mógł uzyskać foldery wszystkich rozmiarów na całym swoim serwerze. Łatwo pomóc Ci znaleźć największe rozmiary.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-09 23:49:32
Napotkałem problem podobny do tego, co opisał Martin Wilde, w moim przypadku porównując ten sam katalog na dwóch różnych serwerach po dublowaniu z rsync.
Zamiast używać skryptu dodałem flagę -b
do du
, która liczy rozmiar w bajtach i o ile mogę określić wyeliminowała różnice na dwóch serwerach. Nadal możesz użyć -s -h
, aby uzyskać zrozumiałe wyniki.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-14 18:55:04
Type "ls-ltrh / path_to_directory"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-11 17:47:05
Następujące rzeczy łatwo zapamiętać
ls -ltrapR
Spis treści katalogu
- l użyj formatu długiej listy
- T Sortuj według czasu modyfikacji, od najnowszych
-r, -- reverse odwrotna kolejność podczas sortowania
- a, --all nie ignoruj wpisów zaczynających się od.
- p, --indicator-style = slash Dołącz / wskaźnik do katalogów
-R, --recursive lista podkatalogów rekurencyjnie
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-18 23:13:44