Вопрос: ls-command: как отобразить размер файла в мегабайтах?


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

ls -la


148
2017-09-20 11:20


Источник




Ответы:


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

-час
  При использовании с опцией -l используйте суффиксы юнитов: Byte, Kilobyte,               Megabyte, Gigabyte, Terabyte и Petabyte, чтобы уменьшить               количество цифр до трех или менее, используя основание 2 для размеров.

ls -lah

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


226
2017-09-20 11:22



Спасибо, но опция -h, похоже, не существует на Tru64 Unix.
Общие рекомендации: установить утилиты GNU ... - reinierpost
Мне нравится ваш совет об использовании человека, но на самом деле поиск в Google намного быстрее, чем использование человеком много времени (как сейчас, когда я нашел этот результат в Google). - trusktr
Google отлично подходит для общих советов, но в конечном итоге man-страницы - это система / ОС, даже специфичные для хоста, обычно создаваемые при компиляции или установке программного обеспечения и, таким образом, авторитетные для программного обеспечения в вашей конкретной системе. - Nevin Williams
Просто чтобы пройти полный круг, есть человек онлайн для gnu / linux: linux.die.net/man - MariusMatutiae


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

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

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


32
2017-09-20 12:33



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


пытаться ls -shR для рекурсивного читаемого человеком формата.


14
2017-10-14 08:27



ОП заявила, что нет -h на Tru64, и сделал это за два года до того, как этот ответ был опубликован. - Michael Kjörling
Мысль Это моя обязанность помогать тем, кто достигает здесь, с тем же поиском Google. - Sorter


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

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

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

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

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


14
2017-09-20 13:36



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


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


6
2017-09-20 11:23





du -sm filename.txt


5
2017-09-20 16:36



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


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

du -sh ./*

Это приведет к отображению всех папок в текущем каталоге с удобным для пользователя форматом, включая более знакомые размеры файлов в Kb, Mb, Gb.


5
2018-04-19 22:57





Если вы просто хотите размер только определенного файла, то команда, тривиальная экстраполяция предыдущих ответов, такова:

ls -sh имя файла (ов)

-s для размера и h для человека, читаемого (как упоминалось выше несколько раз).

Результат будет выглядеть так:

753M myfilename

Если вы не укажете имя файла, оно перечислит каталог, поместив размер каждого файла рядом с его именем - в отличие от того, что ls -la при вызове без аргументов имени файла.

Надеюсь это поможет.


2
2018-06-13 07:36



Этот вопрос касается Tru64 Unix, и OP заявила почти пять лет назад, что -h вариант не существует в ls на этой системе. - G-Man


ls -l --block-size=MB 

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

  • использование MB для 10 ^ 6
  • использовать только M для 2 ^ 20

0
2017-07-24 18:25



Обратите внимание, что это не будет показывать десятичные знаки, Также, что-либо выше 0 кБ, но не более 1 МБ, будет показано как 1MB, По этой причине я нашел ls -l --block-size=kB чтобы быть более полезным. - DaAwesomeP


Если вас просто интересует размер файла, и вам не нужно использовать ls , попробуйте следующее:

# 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

Это напечатает размер файла без необходимости разбирать что-либо.


0
2018-03-10 17:34



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