Як я можу побачити розмір файлів і каталогів в Linux? Якщо використовується df -m
, то він показує розмір всього каталогу на верхньому рівні, але, як і для каталогів та файлів всередині каталогу, як перевірити розмір?
Як я можу побачити розмір файлів і каталогів в Linux? Якщо використовується df -m
, то він показує розмір всього каталогу на верхньому рівні, але, як і для каталогів та файлів всередині каталогу, як перевірити розмір?
Відповіді:
Використовуйте 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
du
команда показує використання диска файлу, який може бути більшим за фактичний розмір файлу. Ви можете використовувати du -d
фактичний розмір ls
. Більше інформації: unix.stackexchange.com/a/106278/155224
Є du
команда.
Розмір каталогу та / або файлу:
$ du -sh .bashrc /tmp
--apparent-size
Перемикач командного рядка дозволяє вимірювати видимі розміри (що ls
показує), а не фактичне використання диска.
-h
Прапор @FranciscoCorralesMorales повинен робити те, що ви просите: розміри друку у читаному для людини форматі (наприклад, 1K 234M 2G)
du
означає підсумовувати використання диска набору файлів FILE , тобто якщо файл дуже малий (тобто 2140 байт), вихід "du" становить (в моєму випадку) 4 КБ, тому що це розмір кластера
--apparent-size
потім.
du -hs *
бачити розмір усіх файлів та каталогів у поточному каталозі.
Використовуйте, ls -s
щоб перелічити розмір файлу, або якщо ви віддаєте перевагу ls -sh
зручним для читання розмірами людей.
Для каталогів використовуйте du
, і знову ж таки, du -h
для читаних для людини розмірів.
Ви можете використовувати:
ls -lh
Використовуючи цю команду, ви побачите видимий простір каталогу та справжній простір файлів, а також детально імена відображених файлів, окрім розміру та дати створення кожного.
ls -l
дасть розмір файлу u, включаючи метадані? як здається, трохи на 4 кб більше для одного з файлів, з якими я намагався
Розмір файлу в МБ
ls -l --b=M filename | cut -d " " -f5
Розмір файлу в ГБ
ls -l --b=G filename | cut -d " " -f5
Також є чудовий 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
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 підтримує розмір блоку, як описано вище.
Перейдіть до обраного каталогу та виконайте:
$ 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 .
Якщо ви використовуєте його в сценарії, використовуйте 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
Я постійно роблю наступне:
$ 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)
Щоб отримати загальний розмір каталогу або загальний розмір використання файлів,
du -csh <directory or filename*> | grep total
Використовуйте команду 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
Я сам користувач 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
Все, що вам потрібно, це -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).
Ви повинні розрізняти розмір файлу та використання диска . Основна відмінність між ними полягає в тому, що файли "розрізані на шматки" і зберігаються в блоки.
Сучасний розмір блоку становить 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
Тут ви можете використовувати ncdu
аналізатор використання диска. Він відображає розмір файлів і каталогів в інтерфейсі ncurses. Ви можете перейти до кожного каталогу та переглянути розміри файлів з одного інтерфейсу.
Щоб встановити
$ sudo apt-get install ncdu
Проаналізувати
$ ncdu <directory>
ls
не покаже вам загальний розмір усього вмісту каталогу.