it-swarm-ru.tech

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

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

ls -la
156
atricapilla

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

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

ls -lah

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

239
Felix

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

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

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

32
Jan.

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

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

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

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

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

15
Dennis Williamson

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

14
Sorter

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

8
iddqd

du -sm filename.txt

5
Ether

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

du -sh ./*

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

5
Keng

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

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

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

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

753M myfilename

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

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

2
Rob Jones
ls -l --block-size=MB 

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

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

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