155

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

ls -la

10 ответов10

236

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

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

ls -lah

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

32

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

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

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

15

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

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

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

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

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

14

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

8

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

5

du -sm filename.txt

5

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

du -sh ./*

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

2

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

ls -sh filename(s)

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

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

753M myfilename

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

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

0
ls -l --block-size=MB 

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

  • используйте MB для 10 ^ 6
  • используйте только M для 2 ^ 20
0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .