Как сделать так, чтобы `ls` показывал размеры файлов в мегабайтах?

442

Какие команды мне нужны для Linux, lsчтобы показать размер файла в МБ?

Пол Шелдрейк
источник

Ответы:

513

ls -l --block-size=Mпредоставит вам длинный список форматов (необходимый для фактического просмотра размера файла) и округления размеров файла до ближайшего MiB.

Если вы хотите использовать единицы измерения MB (10 ^ 6 байт), а не MiB (2 ^ 20 байт), используйте --block-size=MBвместо этого.

Если вы не хотите, чтобы Mсуффикс был присоединен к размеру файла, вы можете использовать что-то вроде --block-size=1M. Спасибо Стефану Шазеласу за предложение.

Если вы просто хотите, чтобы размеры файлов были в «разумных» единицах, а не в мегабайтах , вы можете использовать их -lhдля получения длинного списка форматов и удобного для восприятия размера файла. Это будет использовать единицы размера файла , чтобы сохранить размеры файлов представлены около 1-3 цифр (так что вы увидите размеры файлов , как 6.1K, 151K, 7.1M, 15M, 1.5Gи так далее.

--block-sizeПараметр описан в странице человека для Ls; man lsи искать SIZE. Он также позволяет использовать модули, отличные от MB / MiB, и, судя по всему (я не пробовал), произвольные размеры блоков (так что вы можете увидеть размер файла в виде числа блоков размером 429 байт, если хотите). к).

Обратите внимание, что оба --block-sizeи -hявляются расширениями GNU поверх Open Groupls , поэтому это может не сработать, если у вас нет пользовательского пространства GNU (что делают большинство установок Linux). lsОт GNU Coreutils 8.5 поддерживает --block-размер и -h , как описано выше. Спасибо Кодзиро за то, что указал на это.

CVn
источник
11
Разница, возможно, стоит заметить: --block-size=Mзаставить Mсуффикс отображаться рядом с размером, и вы можете использовать его, --block-size=1Mчтобы опустить его. Также стоит упомянуть, что для этого вам нужны GNU ls (большинство не встроенных систем Linux будут иметь GNU ls).
Стефан Шазелас
2
Это будет GNU ls? Стандартls не имеет такого аргумента. У расширения xsi ls есть -sфлаг, который заставляет его сообщать о количестве блоков, но стандартного флага нет --block-size.
Кодзиро
2
@kojiro GNU ls имеет версию --block-sizecoreutils 8.5, которая установлена ​​в моей системе Debian Squeeze. Поскольку этот вопрос был явно для Linux и не указал ничего другого, я признаю, что предположил, что пользовательская область сосредоточена вокруг GNU coreutils. Я обновил ответ, чтобы уточнить это. (Кроме того, у Open Group ls, похоже, тоже нет -h. :))
CVn
2
@EmanuelBerg, 1000 ^ 7 (10 ^ 21) больше, чем 2 ^ 64 (что составляет ~ 10 ^ 19.27)
Стефан Шазелас
4
@Tom Как говорится в последнем абзаце ответа, --block-sizeэто расширение GNU. Я подозреваю, что Mac OS X не использует GNU ls.
CVn
385

ls -lh дает читабельный размер файла, длинный формат.

При необходимости используются суффиксы k, M, G и T (или без суффикса для байтов), поэтому число остается небольшим, например, 1.4Kили 178M.

-h является расширением GNU coreutils, а не базовым POSIX.

Обратите внимание, что это не отвечает на вопрос точно так, как задано. Если вам нужны размеры строго в MiB даже для небольших или гигантских файлов, ответ Михаэля Кьёрлинга делает это для GNU coreutilsls .

Sirex
источник
4
Это будет печатать размеры файлов в ГБ для чего-то большего, чем чуть менее 1,0 ГиБ (я полагаю).
CVn
5
@ MichaelKjörling Я не вижу в этом плохого ответа (хотя я не голосовал). Иногда ОП не формулирует вопрос точно так, как они должны, поэтому возможно, что они просто хотят, чтобы их читал человек, и вместо этого формулировали это как «в МБ».
Дейсон
5
Upvoted. «Это не отвечает на вопрос (MB)» - совершенно правильное утверждение, но этот ответ только повысил полезность этой SO-страницы, поскольку этот ответ находится в том же контексте. Я только пришел на эту страницу в поисках решения для общего требования «показывать даты в удобочитаемой форме», и hего гораздо проще написать, чем--block-size=M
Ejaz
6
«человекочитаемый» - это ирония. Кто ls -lвообще использует, если не люди? : p
phil294
2
@chengyang: синтаксический анализ ls -lвыходных данных - неправильный способ делать вещи, 99% времени. unix.stackexchange.com/questions/128985/why-not-parse-ls . Этот 1% является щедрым, и в значительной степени ограничивается однострочными, которые вы пишете интерактивно для одноразового использования, а не сценарием, который вы собираетесь многократно использовать для неизвестных имен файлов.
Питер Кордес
46

ls -lhS сортировка по размеру, в удобочитаемом формате

jaciefan
источник
2
Пожалуйста, смотрите комментарии к ls -lhответу по причинам, почему это на самом деле не отвечает на вопрос.
Александр Батищев
2
Мало того, что это на самом деле не отвечает на вопрос (как обсуждалось в комментариях к ответу Sirex), но также не добавляет ничего релевантного ни к одному из существующих ответов: ОП не задает вопрос о порядке сортировки.
CVn
6
просто мысль о том, что сортировка по размеру - это потенциальное продолжение, которое могут иметь люди, по крайней мере, это то, что у меня было
jaciefan
1
В этом случае люди должны посмотреть, как составить список всех файлов, упорядоченных по размеру, что примерно соответствует этому сценарию.
CVn
Я считаю, что это является достойным дополнением к ответам, особенно если
учесть
9

И это опция для перечисления всего в порядке каталога по размеру файла (все еще читаемому человеком) по возрастанию.

ls -lSrh
Маркос Плакона
источник
Как вы думаете, комментарии другого ответа, который не отвечает на вопрос , также применимы к этому?
Дан Даскалеску
@DanDascalescu Нет. Эти комментарии не являются полезными, 2 ответа на вопрос. Просто мои 2 цента как хак, пытающийся выяснить, как перечислить размеры файлов в системе Linux, о которой он ничего не знает.
Даулерс