Как я могу увидеть размер файлов и каталогов в 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 Спасибо. Исправлено.
Мк ..

2
как я могу увидеть размер в байтах (мега, гига, ...)?
Франциско Корралес Моралес

7
@FranciscoCorralesMorales ls -lh покажет вам размер в КБ МБ ГБ и т. Д.
мк.

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делает диск использование Обобщить набор файлов , то есть , если файл очень малы (т.е. 2140 байт) выход «его» является (в моем случае) 4KB потому что размер кластера
mfloris

@mfloris Используйте --apparent-sizeтогда.
Максим Егорушкин

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

83

Используйте, ls -sчтобы указать размер файла, или, если вы предпочитаете ls -shчеловеческий размер.

Для каталогов используйте du, и опять же, du -hдля удобочитаемых размеров.


8
Совет должен использовать; 'du -sh *', чтобы вывести список всех размеров каталогов. :)
Entalpi

36

Ты можешь использовать:

ls -lh

Используя эту команду, вы увидите видимое пространство каталога и истинное пространство файлов, а также подробные имена отображаемых файлов, а также размер и дату создания каждого из них.


ls -lдаст вам размер файла, включая метаданные? как кажется, немного больше на 4 КБ для одного файла, с которым я пытался
Jun711

22

Размер файла в МБ

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

Размер файла в ГБ

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

Как получить два поля в качестве вывода?
surbhiGoel

18

Существует также отличный 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.

Если вы хотите использовать единицы измерения MB (10 ^ 6 байт), а не единицы измерения MiB (2 ^ 20 байт), используйте --block-size = MB.

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

Это описано в справочной странице для ls; man ls и ищите РАЗМЕР. Он также позволяет использовать модули, отличные от MB / MiB, и, судя по всему (я не пробовал), произвольные размеры блоков (так что вы можете видеть размер файла как число 412-байтовых блоков, если хотите). к).

Обратите внимание, что параметр --block-size является расширением GNU поверх ls Open Group, поэтому он может не работать, если у вас нет пользовательского пространства GNU (что делают большинство установок Linux). Ls из GNU coreutils 8.5 поддерживает --block-size, как описано выше.


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

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

ls -lrtsh


7

Я все время делаю следующее:

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

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'печатает размеры в единицах 1 048 576 байт; см SIZEформат ниже

SIZEявляется целым числом и необязательной единицей (пример: 10M - 10 * 1024 * 1024). Единицами измерения являются K, M, G, T, P, E, Z, Y (степени 1024) или KB, MB, ... (степени 1000).



2

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

Современный размер блока составляет 4 КБ, поэтому файлы будут использовать дисковое пространство, кратное 4 КБ, независимо от их размера.

Если вы используете команду, 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, вы можете сделать сортировку, также вам нужно перейти в каталог, где вы хотите проверить размер файлов


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

1

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

Установить

$ sudo apt-get install ncdu

Анализировать

$ ncdu <directory>

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.