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

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

ls -la

10 ответов

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

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

ls -lah

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

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

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

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

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

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

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

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

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

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

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

du -sm filename.txt

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

du -sh ./*

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

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

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

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

Вывод будет выглядеть так:

753M myfilename

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

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

ls -l --block-size=MB 

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

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

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

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

Другие вопросы по тегам