Jak mogę zobaczyć rozmiar plików i katalogów w systemie Linux?

341

Jak mogę sprawdzić rozmiar plików i katalogów w systemie Linux? Jeśli używasz df -m, pokazuje rozmiar całego katalogu na najwyższym poziomie, ale w przypadku katalogów i plików w katalogu, jak mogę sprawdzić rozmiar?

Advait
źródło

Odpowiedzi:

533

Użyj lspolecenia dla plików i dupolecenia dla katalogów.

Sprawdzanie rozmiarów plików

ls -l filename   #Displays Size of the specified file
ls -l *          #Displays Size of All the files in the current directory
ls -al *         #Displays Size of All the files including hidden files in the current directory
ls -al dir/      #Displays Size of All the files including hidden files in the 'dir' directory

lspolecenie nie wyświetli rzeczywistego rozmiaru katalogów ( dlaczego? ). Dlatego używamy dudo tego celu.

Sprawdzanie rozmiarów katalogu

du -sh directory_name    #Gives you the summarized(-s) size of the directory in human readable(-h) format
du -bsh *                #Gives you the apparent(-b) summarized(-s) size of all the files and directories in the current directory in human readable(-h) format

W tym -hopcję w żadnej z powyższych poleceń (dla Ex: ls -lh *lub du -sh) daje wielkość w formacie czytelnym dla człowieka ( kb, mb, gb, ...)

Aby uzyskać więcej informacji, patrz man lsiman du

mk ..
źródło
7
lsnie pokaże całkowitego rozmiaru całej zawartości katalogu.
Maxim Egorushkin
3
@MaximYegorushkin Dziękuję. Poprawione
mk ..
2
jak mogę zobaczyć rozmiar w bajtach (Mega, Giga, ...)?
Francisco Corrales Morales,
7
@FranciscoCorralesMorales ls -lh pokaże ci rozmiar w KB MB GB itd.
mk ..
4
zwróć uwagę, że dupolecenie pokazuje użycie pliku na dysku, które może być większe niż rzeczywisty rozmiar pliku. Możesz użyć, du -daby uzyskać rzeczywisty rozmiar ls. Więcej informacji: unix.stackexchange.com/a/106278/155224
Lucas Alonso
148

Jest durozkaz.

Rozmiar katalogu i / lub pliku:

$ du -sh .bashrc /tmp

--apparent-sizePrzełącznik wiersza poleceń pozwala mierzyć pozorne rozmiary (co lspokazuje), a nie faktyczne użycie dysku.

Maxim Egorushkin
źródło
1
jak mogę zobaczyć rozmiar w bajtach (Kilo, Mega, Giga, ...)?
Francisco Corrales Morales,
8
@FranciscoCorralesMorales -hflaga powinna robić to, o co prosisz: rozmiary wydruku w formacie czytelnym dla człowieka (np. 1K 234M 2G)
Maxim Egorushkin
3
Nie sądzę, że to prawda. Co duto jest podsumowanie użycia dysku przez zbiór PLIKÓW , to znaczy jeśli plik jest bardzo mały (tj. 2140 bajtów), wyjściem „du” jest (w moim przypadku) 4KB, ponieważ taki jest rozmiar klastra
mfloris
@mfloris Użyj --apparent-sizewtedy.
Maxim Egorushkin,
3
Chciałbym du -hs *zobaczyć rozmiar wszystkich plików i katalogów w bieżącym katalogu.
Jordan Stewart,
82

Służy ls -sdo wyświetlania listy rozmiarów plików lub jeśli preferujesz ls -shrozmiary czytelne dla ludzi.

Do wykorzystania w katalogach dui ponownie du -hw rozmiarach czytelnych dla ludzi.

Thor
źródło
7
Wskazówka jest do użycia; „du -sh *”, aby wyświetlić listę wszystkich rozmiarów katalogów. :)
Entalpi
36

Możesz użyć:

ls -lh

Za pomocą tego polecenia zobaczysz pozorną przestrzeń katalogu i prawdziwą przestrzeń plików, aw szczegółach nazwy wyświetlanych plików, oprócz rozmiaru i daty utworzenia każdego z nich.

Yenier Torres
źródło
ls -lpoda rozmiar pliku, w tym metadane? ponieważ wydaje się być nieco 4kb większy dla jednego pliku, z którym próbowałem
Jun711,
22

Rozmiar pliku w MB

ls -l --b=M  filename | cut -d " " -f5

Rozmiar pliku w GB

ls -l --b=G  filename | cut -d " " -f5
Ravichandra
źródło
Jak uzyskać dwa pola jako wynik?
surbhiGoel
17

Istnieje również doskonałe ncdunarzędzie - może wyświetlać rozmiar katalogu ze szczegółowymi informacjami o podfolderach i plikach.

Instalacja

Ubuntu:

$ sudo apt-get install ncdu

Stosowanie

Wystarczy wpisać ncdu [path]w wierszu polecenia. Po kilku sekundach analizy ścieżki zobaczysz coś takiego:

$ ncdu 1.11 ~ Use the arrow keys to navigate, press ? for help
--- / ---------------------------------------------------------
.  96,1 GiB [##########] /home
.  17,7 GiB [#         ] /usr
.   4,5 GiB [          ] /var
    1,1 GiB [          ] /lib
  732,1 MiB [          ] /opt
. 275,6 MiB [          ] /boot
  198,0 MiB [          ] /storage
. 153,5 MiB [          ] /run
.  16,6 MiB [          ] /etc
   13,5 MiB [          ] /bin
   11,3 MiB [          ] /sbin
.   8,8 MiB [          ] /tmp
.   2,2 MiB [          ] /dev
!  16,0 KiB [          ] /lost+found
    8,0 KiB [          ] /media
    8,0 KiB [          ] /snap
    4,0 KiB [          ] /lib64
e   4,0 KiB [          ] /srv
!   4,0 KiB [          ] /root
e   4,0 KiB [          ] /mnt
e   4,0 KiB [          ] /cdrom
.   0,0   B [          ] /proc
.   0,0   B [          ] /sys
@   0,0   B [          ]  initrd.img.old
@   0,0   B [          ]  initrd.img
@   0,0   B [          ]  vmlinuz.old
@   0,0   B [          ]  vmlinuz

Usuń aktualnie podświetlony element za pomocą d, zakończ za pomocą CTRL+c

avtomaton
źródło
16

ls -l --block-size = M da ci długą listę formatów (potrzebną do rzeczywistego zobaczenia rozmiaru pliku) i okrągłe rozmiary plików do najbliższej MiB.

Jeśli chcesz jednostek MB (10 ^ 6 bajtów) zamiast MiB (2 ^ 20 bajtów), użyj zamiast tego opcji --block-size = MB.

Jeśli nie chcesz dołączać sufiksu M do rozmiaru pliku, możesz użyć czegoś takiego jak --block-size = 1M. Dziękuję Stéphane Chazelas za zasugerowanie tego.

Jest to opisane na stronie podręcznika dla ls; man ls i wyszukaj ROZMIAR. Pozwala także na jednostki inne niż MB / MiB, a na podstawie wyglądu (nie próbowałem tego) również dowolnych rozmiarów bloków (aby można było zobaczyć rozmiar pliku jako liczbę bloków 412 bajtów, jeśli chcesz do).

Zauważ, że parametr --block-size jest rozszerzeniem GNU nad ls Open Group, więc może nie działać, jeśli nie masz przestrzeni użytkownika GNU (co robi większość instalacji Linuksa). Ls z GNU coreutils 8.5 obsługuje - blokowy rozmiar, jak opisano powyżej.

Adi
źródło
13

Przejdź do wybranego katalogu i wykonaj:

$ du -d 1 -h

gdzie:

-d 1 is the depth of the directories

-h is the human-readable option

Zobaczysz tak:

0   ./proc
8.5M    ./run
0   ./sys
56M ./etc
12G ./root
33G ./var
23M ./tmp
3.2G    ./usr
154M    ./boot
26G ./home
0   ./media
0   ./mnt
421M    ./opt
0   ./srv
2.6G    ./backups
80G .
Claudio Guirunas
źródło
9

Jeśli używasz go w skrypcie, użyj stat.

$ date | tee /tmp/foo
Wed Mar 13 05:36:31 UTC 2019

$ stat -c %s /tmp/foo
29

$ ls -l /tmp/foo
-rw-r--r--  1 bruno  wheel  29 Mar 13 05:36 /tmp/foo

To da ci rozmiar w bajtach. Zobacz man statwięcej opcji formatu wyjściowego.

Odpowiednikiem OSX / BSD jest:

$ date | tee /tmp/foo
Wed Mar 13 00:54:16 EDT 2019

$ stat -f %z /tmp/foo
29

$ ls -l /tmp/foo
-rw-r--r--  1 bruno  wheel  29 Mar 13 00:54 /tmp/foo
Bruno Bronosky
źródło
8

Możesz użyć poniższego polecenia, aby uzyskać listę plików w formacie czytelnym dla człowieka.

ls -lrtsh

Amit
źródło
7

Cały czas wykonuję następujące czynności:

$ du -sh backup-lr-May-02-2017-1493723588.tar.gz

NB:

-s, --summarize
            display only a total for each argument
-h, --human-readable
            print sizes in human readable format (e.g., 1K 234M 2G)
Fokwa Best
źródło
5

Aby uzyskać całkowity rozmiar katalogu lub całkowity rozmiar pliku,

du -csh <directory or filename*> | grep total
suhail ahamed F.
źródło
5

Użyj polecenia ls z argumentem -h: [root @ hots19 itp.] # ls -lh
H: dla czytelnego dla człowieka.

Exemple: 
    [root@CIEYY1Z3 etc]# ls -lh
    total 1.4M
    -rw-r--r--.  1 root   root      44M Sep 15  2015 adjtime
    -rw-r--r--.  1 root   root     1.5K Jun  7  2013 aliases
    -rw-r--r--   1 root   root      12K Nov 25  2015 aliases.db
    drwxr-xr-x.  2 root   root     4.0K Jan 11  2018 alternatives
    -rw-------.  1 root   root      541 Jul  8  2014 anacrontab
    -rw-r--r--.  1 root   root      55M Sep 16  2014 asound.conf
    -rw-r--r--.  1 root   root       1G Oct  6  2014 at.deny
mkebri
źródło
4

Sam jestem użytkownikiem Ubuntu 16.04 i uważam, że llpolecenie jest zdecydowanie najłatwiejszym sposobem na przejrzenie zawartości katalogu. Zauważyłem, że nie wszystkie dystrybucje Linuksa obsługują to polecenie, ale prawdopodobnie istnieje obejście / instalacja dla każdej dystrybucji.

Przykład:

user@user-XPS-15-9560:/$ ll
total 188
drwxr-xr-x  27 root root  4096 Jan 26 09:13 ./
drwxr-xr-x  27 root root  4096 Jan 26 09:13 ../
drwxr-xr-x   2 root root  4096 Jan 22 15:13 bin/
drwxr-xr-x   4 root root 12288 Jan 29 11:35 boot/
drwxr-xr-x   2 root root  4096 Sep  3 18:14 cdrom/
drwxr-xr-x  20 root root  4440 Feb  5 08:43 dev/
drwxr-xr-x 153 root root 12288 Feb  2 15:17 etc/
drwxr-xr-x   4 root root  4096 Sep  3 18:15 home/
...

Największą zaletą jest dla mnie to, że jest szybki i bardzo intuicyjny w obsłudze.

AKTUALIZACJA: nie wiedziałem, że w Ubuntu jest to wstępnie skonfigurowany alias. Możesz łatwo ustawić go samodzielnie, wykonując alias ll="ls -la"w wierszu polecenia lub dodając ten wpis w pliku konfiguracyjnym .bashrc:

sudo nano ~/.bashrc
...add line described above and save file by pressing Ctrl+X and Y...
source ~/.bashrc
Matteus
źródło
3

du -sh [nazwa_pliku]

działa idealnie, aby uzyskać rozmiar określonego pliku.

Eyshika
źródło
3

Wszystko czego potrzebujesz to flagi -li --block-sizeflagi

Rozmiar wszystkich plików i katalogów w katalogu roboczym (w MB)

ls -l --block-size=M

Rozmiar wszystkich plików i katalogów w katalogu roboczym (w GB)

ls -l --block-size=G

Rozmiar określonego pliku lub katalogu

ls -l --block-size=M my_file.txt
ls -l --block-size=M my_dir/

ls --help

-l użyj długiego formatu listy

--block-size=SIZE: skaluj rozmiary SIZEprzed wydrukowaniem; np. '--block-size=M'drukuje rozmiary w jednostkach 1 048 576 bajtów; patrz SIZEformat poniżej

SIZEjest liczbą całkowitą i opcjonalną jednostką (przykład: 10 M to 10 * 1024 * 1024). Jednostki to K, M, G, T, P, E, Z, Y (moc 1024) lub KB, MB, ... (moc 1000).


Giorgos Myrianthous
źródło
2

Musisz rozróżnić rozmiar pliku i użycie dysku . Główna różnica między nimi polega na tym, że pliki są „pocięte na kawałki” i przechowywane w blokach.

Współczesny rozmiar bloku to 4KiB, więc pliki zajmą miejsce na dysku wielokrotne 4KiB, bez względu na to, jak małe są.

Jeśli użyjesz polecenia stat, możesz zobaczyć obie figury obok siebie.

stat file.c

Jeśli chcesz mieć bardziej kompaktowy widok katalogu, możesz użyć ls -ls, co da ci użycie w jednostkach 1KiB.

ls -ls dir

duZapewni również rzeczywiste wykorzystanie dysku, w jednostkach 1KiB lub dutree z -uflagą.

Przykład: użycie pliku 1-bajtowego

$ echo "" > file.c

$ ls -l file.c
-rw-r--r-- 1 nacho nacho 1 Apr 30 20:42 file.c

$ ls -ls file.c
4 -rw-r--r-- 1 nacho nacho 1 Apr 30 20:42 file.c

$ du file.c
4 file.c

$ dutree file.c
[ file.c 1 B ]

$ dutree -u file.c
[ file.c 4.00 KiB ]

$ stat file.c
 File: file.c
 Size: 1 Blocks: 8 IO Block: 4096 regular file
Device: 2fh/47d Inode: 2185244 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ nacho) Gid: ( 1000/ nacho)
Access: 2018-04-30 20:41:58.002124411 +0200
Modify: 2018-04-30 20:42:24.835458383 +0200
Change: 2018-04-30 20:42:24.835458383 +0200
 Birth: -

Ponadto w nowoczesnych systemach plików możemy mieć migawki, rzadkie pliki (pliki z dziurami w nich), które dodatkowo komplikują sytuację.

Możesz zobaczyć więcej szczegółów w tym artykule: zrozumienie rozmiaru pliku w systemie Linux

nachoparker
źródło
1

możesz użyć ls -sh w systemie Linux, możesz to sortować, musisz także przejść do katalogu, w którym chcesz sprawdzić rozmiar plików

Prem S.
źródło
1

przejść do określonego katalogu a następnie uruchomić poniżej polecenia

# du -sh * 

4.0K    1
4.0K    anadb.sh --> Shell file
4.0K    db.sh/    --> shell file
24K     backup4/  --> Directory
8.0K    backup6/  --> Directory 
1.9G    backup.sql.gz  --> sql file
sachin_ur
źródło
0

Możesz użyć ncduanalizatora wykorzystania dysku tutaj. Wyświetla rozmiar plików i katalogów w interfejsie ncurses. Możesz przejść do każdego katalogu i zobaczyć rozmiary plików z tego samego interfejsu.

Żeby zainstalować

$ sudo apt-get install ncdu

Analizować

$ ncdu <directory>

wprowadź opis zdjęcia tutaj

sumedhe
źródło