Як я бачу розмір файлів і каталогів у Linux?


341

Як я можу побачити розмір файлів і каталогів в Linux? Якщо використовується df -m, то він показує розмір всього каталогу на верхньому рівні, але, як і для каталогів та файлів всередині каталогу, як перевірити розмір?

Відповіді:


533

Використовуйте lsкоманду для файлів та duкоманду для каталогів.

Перевірка розмірів файлів

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

lsкоманда не перелічить фактичний розмір каталогів ( чому? ). Тому ми використовуємо duдля цього.

Перевірка розмірів каталогів

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

У тому числі і -hваріант в будь-якому з перерахованих вище команд (для Ex: ls -lh *або du -sh) дасть вам розмір в легкому для читання форматі ( kb, mb, gb, ...)

Для отримання додаткової інформації див man lsіman du


7
lsне покаже вам загальний розмір усього вмісту каталогу.
Максим Єгорушкін

3
@MaximYegorushkin Дякую Виправлено.
mk ..

2
як я бачу розмір у байтах (Mega, Giga, ...)?
Франциско Корралес Моралес

7
@FranciscoCorralesMorales ls -lh покаже вам розмір у kb MB Гб тощо
mk ..

4
зауважте, що duкоманда показує використання диска файлу, який може бути більшим за фактичний розмір файлу. Ви можете використовувати du -dфактичний розмір ls. Більше інформації: unix.stackexchange.com/a/106278/155224
Лукас Алонсо

148

Є duкоманда.

Розмір каталогу та / або файлу:

$ du -sh .bashrc /tmp

--apparent-sizeПеремикач командного рядка дозволяє вимірювати видимі розміри (що lsпоказує), а не фактичне використання диска.


1
як я бачу розмір у байтах (Кіло, Мега, Гіга, ...)?
Франциско Корралес Моралес

8
-hПрапор @FranciscoCorralesMorales повинен робити те, що ви просите: розміри друку у читаному для людини форматі (наприклад, 1K 234M 2G)
Максим Єгорушкін,

3
Я не думаю, що це правильно. Що duозначає підсумовувати використання диска набору файлів FILE , тобто якщо файл дуже малий (тобто 2140 байт), вихід "du" становить (в моєму випадку) 4 КБ, тому що це розмір кластера
mfloris

@mfloris Використовуйте --apparent-sizeпотім.
Максим Єгорушкін

3
Мені подобається du -hs *бачити розмір усіх файлів та каталогів у поточному каталозі.
Джордан Стюарт

82

Використовуйте, ls -sщоб перелічити розмір файлу, або якщо ви віддаєте перевагу ls -shзручним для читання розмірами людей.

Для каталогів використовуйте du, і знову ж таки, du -hдля читаних для людини розмірів.


7
Порада - використовувати; 'du -sh *', щоб перелічити всі розміри каталогів. :)
Ентальпі

36

Ви можете використовувати:

ls -lh

Використовуючи цю команду, ви побачите видимий простір каталогу та справжній простір файлів, а також детально імена відображених файлів, окрім розміру та дати створення кожного.


ls -lдасть розмір файлу u, включаючи метадані? як здається, трохи на 4 кб більше для одного з файлів, з якими я намагався
Jun711,

22

Розмір файлу в МБ

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

Розмір файлу в ГБ

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

Як отримати два поля як вихід?
surbhiGoel

17

Також є чудовий ncdu утиліта - вона може показувати розмір каталогів з детальною інформацією про папки та файли.

Установка

Ubuntu:

$ sudo apt-get install ncdu

Використання

Просто введіть ncdu [path]командний рядок. Через кілька секунд для аналізу шляху ви побачите щось подібне:

$ 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

Видаліть виділений на даний момент елемент із d, виберіть CTRL+c


16

ls -l --block-size = M дасть вам довгий список формату (необхідний, щоб фактично побачити розмір файлу) та круглі розміри файлів до найближчого MiB.

Якщо ви хочете МБ (10 ^ 6 байт), а не одиниці MiB (2 ^ 20 байт), використовуйте натомість --block-size = MB.

Якщо ви не хочете, щоб суфікс M додався до розміру файлу, ви можете використовувати щось на зразок --block-size = 1M. Дякую Стефану Шазеласу, що запропонував це.

Це описано на сторінці man для ls; man ls та шукайте РОЗМІР. Він також дозволяє використовувати одиниці, окрім MB / MiB, а також з вигляду цього (я цього не пробував) довільних розмірів блоків (так що ви можете бачити розмір файлу як кількість 412-байтних блоків, якщо хочете до).

Зауважте, що параметр --block-size - це розширення GNU, що лежить на відстані Open Group, тому це може не спрацювати, якщо у вас немає користувальницької групи GNU (як це робить більшість установок Linux). Ls від GNU coreutils 8.5 підтримує розмір блоку, як описано вище.


13

Перейдіть до обраного каталогу та виконайте:

$ du -d 1 -h

де:

-d 1 is the depth of the directories

-h is the human-readable option

Ви побачите так:

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 .

9

Якщо ви використовуєте його в сценарії, використовуйте 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

Це дасть вам розмір у байтах. Подивитисяman stat Додаткові параметри формату виводу.

Еквівалентно OSX / BSD , це:

$ 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

8

Ви можете скористатися командою нижче, щоб отримати список файлів у легко читаному форматі.

лс -лртш


7

Я постійно роблю наступне:

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

Примітка:

-s, --summarize
            display only a total for each argument
-h, --human-readable
            print sizes in human readable format (e.g., 1K 234M 2G)

5

Щоб отримати загальний розмір каталогу або загальний розмір використання файлів,

du -csh <directory or filename*> | grep total

5

Використовуйте команду ls з аргументом -h: [root @ hots19 тощо] # ls -lh
h: для людського читання.

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

4

Я сам користувач Ubuntu 16.04, і я вважаю, що llкоманда - це найпростіший спосіб переглянути вміст каталогів. Я помітив, що не всі дистрибутиви Linux підтримують цю команду, але, мабуть, існує вирішення / встановлення для кожного дистрибутива там.

Приклад:

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/
...

Найбільша перевага для мене полягає в тому, що це швидко та дуже інтуїтивно користуватися.

ОНОВЛЕННЯ: те, що я не знав, це те, що для Ubuntu це попередньо налаштований псевдонім. Ви можете легко встановити його самостійно, виконавши alias ll="ls -la"в командному рядку або додавши цей запис у свій .bashrc файл конфігурації:

sudo nano ~/.bashrc
...add line described above and save file by pressing Ctrl+X and Y...
source ~/.bashrc

3

du -sh [ім'я файлу]

прекрасно працює для отримання розміру певного файлу.


3

Все, що вам потрібно, це -lі --block-sizeпрапори

Розмір усіх файлів і каталогів у робочому каталозі (у МБ)

ls -l --block-size=M

Розмір усіх файлів і каталогів в робочому каталозі (в ГБ)

ls -l --block-size=G

Розмір певного файлу чи каталогу

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

ls --help

-l використовувати довгий формат лістингу

--block-size=SIZE: розміри масштабу SIZEдо їх друку; наприклад, '--block-size=M'розміри друку в одиницях 1048 576 байт; дивіться SIZEформат нижче

SIZEє цілою та необов'язковою одиницею (приклад: 10M - 10 * 1024 * 1024). Одиницями є K, M, G, T, P, E, Z, Y (потужність 1024) або KB, MB, ... (потужність 1000).



2

Ви повинні розрізняти розмір файлу та використання диска . Основна відмінність між ними полягає в тому, що файли "розрізані на шматки" і зберігаються в блоки.

Сучасний розмір блоку становить 4KiB, тому файли будуть використовувати дисковий простір, кратний 4KiB, незалежно від того, наскільки вони невеликі.

Якщо ви використовуєте команду, statви можете бачити обидві фігури поряд.

stat file.c

Якщо ви хочете отримати більш компактний вигляд для каталогу, ви можете використовувати ls -ls, що дасть вам можливість використовувати в одиницях 1 Кбіт.

ls -ls dir

Також duдасть вам реальне використання диска в одиницях 1 Кбіт або dutree з-u прапором.

Приклад: використання файлу в 1 байт

$ 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: -

Крім того, у сучасних файлових системах ми можемо мати знімки, розріджені файли (файли з отворами в них), які ще більше ускладнюють ситуацію.

Більш детальну інформацію ви можете побачити в цій статті: розуміння розміру файлу в Linux


1

ви можете використовувати ls -sh в Linux, ви можете сортувати також вам потрібно перейти до dir, де ви хочете перевірити розмір файлів


1

перейдіть до конкретного каталогу, а потім запустіть нижче команди

# 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

0

Тут ви можете використовувати ncduаналізатор використання диска. Він відображає розмір файлів і каталогів в інтерфейсі ncurses. Ви можете перейти до кожного каталогу та переглянути розміри файлів з одного інтерфейсу.

Щоб встановити

$ sudo apt-get install ncdu

Проаналізувати

$ ncdu <directory>

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.