ls-команда: как отобразить размер файла в мегабайтах?

485287
phuclv

В Unix (Tru64), как заставить lsкоманду показывать размер файла в мегабайтах? В настоящее время я могу показать его в байтах, используя следующее:

ls -la 
151

10 ответов на вопрос

229
Felix

Может быть -h, вам достаточно

-h
При использовании с параметром -l используйте суффиксы единиц измерения: байты, килобайты, мегабайты, гигабайты, терабайты и петабайты, чтобы уменьшить количество цифр до трех или менее, используя основание 2 для размеров.

ls -lah 

Общий совет: Используйте man commandnameдля чтения руководства / справки по определенной команде, например, здесь man ls.

Спасибо, но опция -h не существует в Tru64 Unix. 13 лет назад 1
Общий совет: установите утилиты GNU ... reinierpost 13 лет назад 8
+1 для справочных страниц (+5, если бы я мог!). Это бесценный ресурс, когда вы не знаете, как сделать что-то с определенной командой. Kevin M 13 лет назад 0
Мне нравится ваш совет по использованию man, но на самом деле, поиск в Google намного быстрее, чем при использовании man в большинстве случаев (как сейчас, когда я нашел этот результат в Google). trusktr 11 лет назад 21
Google подойдет и для общих советов, но, в конечном счете, справочные страницы относятся к системе / ОС, даже к конкретным хостам, обычно создаются при компиляции или установке программного обеспечения и, таким образом, являются авторитетными для программного обеспечения в вашей конкретной системе. Nevin Williams 10 лет назад 4
Просто чтобы пройти полный круг, есть человек онлайн для GNU / Linux: http://linux.die.net/man/ MariusMatutiae 10 лет назад 1
Можем ли мы установить МБ по умолчанию? Omer 6 лет назад 0
`ls --help` обычно имеет достаточно информации против` man ls` icc97 6 лет назад 0
Мнемоника: `h` означает читабельный человек Miscreant 6 лет назад 0
32
Jan.

ls --block-size=Mпечатает размеры в мегабайтах, но показывает 1 МБ также для всего, что меньше 1 МБ. Я не уверен, что эта опция приемлема в вашей UNIX-версии ls.

На самом деле ls -lhтакже печатает размеры в гигабайтах, если файл достаточно большой (ну в любом случае: в Linux 64bit это работает:>)

На боковом узле: du -sh *печатает также размеры каталогов в текущем каталоге.

Спасибо! Мне нужно было отслеживать изменения файлов в папке в реальном времени, и использование `ls -h` не имеет смысла после того, как размер файла превышает 1 ГБ, поэтому я использую эту команду в 1-секундном цикле:` while true; do ls -al --block-size = M; сон 1; done` ccpizza 8 лет назад 0
15
Dennis Williamson

Вам придется использовать, awkчтобы сделать математику для вас:

ls -l | awk 'BEGIN $5 >= mega {$5 = $5/mega "MB"} ' 

Это не повлияет на вывод для файлов, которые меньше, чем mega.

Возможно, вам придется настроить номер поля в соответствии с тем, как вы lsвыложены. Вы можете изменить megaна «1000000», если это ваше предпочтение.

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

Гораздо менее элегантно, чем `ls -lh` или` ls --block-size = M`, но AWK очень полезен! Statwonk 9 лет назад 3
Как раз то, что мне было нужно. Все остальные решения округляются до ближайшего МБ, но это показывает несколько десятичных разрядов и легко настраивается. zeroimpl 9 лет назад 0
Это хорошее решение для тех систем (AIX - я смотрю на вас), у которых нет опции -h. Buggabill 8 лет назад 2
14
Sorter

try ls -shR for recursive human readable format.

[OP заявил, что на Tru64 нет `-h`] (http://superuser.com/questions/190653/ls-command-how-to-print-file-size-in-megabytes#comment193423_190654), и сделал это за два года до публикации этого ответа. a CVn 10 лет назад 4
Мысль Это моя обязанность, чтобы помочь тем, кто достигает здесь с тем же поиском в Google. Sorter 7 лет назад 2
6
n0pe

попробуй ls -lash, он печатает размеры в удобочитаемом формате

5
Ether

du -sm filename.txt

он всегда округляется до размера ... если размер меньше 1 МБ, скажем, 500 КБ, то также будет напечатано 1 МБ AnonGeek 11 лет назад 1
5
Keng

Вы также можете ввести

du -sh ./* 

При этом будут перечислены все папки в текущем каталоге в удобочитаемом формате, включая более известные размеры файлов в килобайтах, мегабайтах, гигабайтах.

2
Rob Jones

If you just want the size of only a specific file, then the command, a trivial extrapolation of the previous answers, is:

ls -sh filename(s)

-s is for size and the h is for Human Readable (as mentioned above a few times).

The output will look like this:

753M myfilename 

If you leave out the filename(s), it'll list the directory, placing the size of each file next to its name — not unlike what ls -la does when invoked with no filename arguments.

Hope this helps.

Этот вопрос касается Tru64 Unix, и ОП почти пять лет назад заявил, что опция `-h` не существует в` ls` в этой системе. G-Man 8 лет назад 2
0
Evan
ls -l --block-size=MB 

Для --block-sizeпараметра:

  • использовать MBдля 10 ^ 6
  • использовать только Mдля 2 ^ 20
Обратите внимание, что это ** не будет отображать никаких десятичных разрядов **. Кроме того, ** все, что выше 0 кБ, но не больше 1 МБ, будет отображаться как `1MB` **. По этой причине я нашел `ls -l --block-size = kB` более полезным. DaAwesomeP 8 лет назад 0
0
SKN

If you're just interested in the file size, and you don't have to use the ls command, try the following:

# echo "Hello World" > file.txt # ls -l file.txt -rw-r--r-- 1 user user 12 Mar 10 11:32 file.txt # stat --printf='%s\n' file.txt 12 

This will print the file size without the need to parse anything.

OP хочет размер в мегабайтах, может быть, опция stat даст размер в удобочитаемой форме? Archemar 8 лет назад 0
Ах, это было глупо с моей стороны. Спасибо, что поймали это. Насколько мне известно, stat не имеет возможности манипулировать размером с помощью --printf или любого другого параметра. Скорее всего, потребуется использовать утилиты командной строки printf и bc. В каком случае зачем? ls и cut / awk будут быстрее. SKN 8 лет назад 0

Похожие вопросы