Як зробити так, щоб "ls" показував розміри файлів у мегабайтах?


Відповіді:


513

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

Якщо ви хочете МБ (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 поверх відкритої групиls , тому це може не спрацювати, якщо у вас немає країни користувача GNU (як це робить більшість установок Linux). lsВід GNU Coreutils 8.5 підтримує --block-розмір і -h , як описано вище. Завдяки kiro, що вказав на це.


11
Різницю, можливо, варто зауважити: --block-size=Mвикликати Mпоказ суфікса поруч із розміром, і ви можете --block-size=1Mйого опустити. Можливо, варто також зазначити, що для цього вам потрібні ідентифікатори GNU (більшість невбудованих систем Linux матимуть GNU ls).
Стефан Шазелас

2
Це було б GNU ls? Стандартls не має такого аргументу. З розширенням xsi ls є -sпрапор, завдяки чому він повідомляє кількість блоків, але стандартного прапора немає --block-size.
якийro

2
@kojiro GNU ls має --block-sizeCoreutils 8.5, що встановлено в моїй системі Debian Squeeze. Оскільки питання було явним для Linux і не вказало нічого іншого, я визнаю, що я припустив, що користувальницька область зосереджена навколо ядер GNU. Я оновив відповідь, щоб уточнити це. (Окрім того, у Open Group також не є -h. :))
CVn

2
@EmanuelBerg, 1000 ^ 7 (10 ^ 21) більше, ніж 2 ^ 64 (що становить ~ 10 ^ 19,27)
Стефан Шазелас

4
@Tom Як говориться в заключному пункті відповіді, --block-sizeце розширення GNU. Я підозрюю, що Mac OS X не використовує GNU ls.
CVn

384

ls -lh надає читабельні людиною розміри файлів, довгий формат.

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

-h є розширенням GNU coreutils, а не базовим POSIX.

Зауважте, що це не відповідає на запитання точно так, як задано. Якщо ви хочете, щоб розміри були строго в MiB навіть для невеликих або гігантських файлів, відповідь Майкла Кьорлінга робить це для ядер GNUls .


4
Це дозволить надрукувати розміри файлів у ГБ для чогось більшого, ніж трохи менше 1,0 Гб (я вважаю).
CVn

5
@ MichaelKjörling Я не сприймаю це як погану відповідь (хоча я не виголосив). Іноді ОП не задає питання точно так, як слід, тому можливо, що вони просто хотіли зрозуміти людині вихід, а натомість сформулювали це як "у МБ".
Дасон

5
Отримано. "Це не відповідає на запитання (MB)" - це цілком коректне твердження, але ця відповідь лише збільшила корисність цієї сторінки SO, оскільки ця відповідь знаходиться в одному контексті. Я лише зайшов на цю сторінку, шукаючи рішення на загальну вимогу "показати дати у читаній людиною формі", і писати hїї набагато простіше, ніж--block-size=M
Ejaz

6
"читабельний для людини" - це щось іронічне. Хто ls -lвзагалі використовує, якщо не люди? : p
Blauhirn

2
@chengyang: синтаксичний аналіз ls -lрезультатів - це неправильний спосіб робити речі, 99% часу. unix.stackexchange.com/questions/128985/why-not-parse-ls . Цей 1% є щедрим і в значній мірі обмежується одноразовими написаннями для одноразового використання, а не сценарієм, який ви збираєтеся використовувати неодноразово у невідомих іменах.
Пітер Кордес

45

ls -lhS сортувати за розміром у читаному для людини форматі


2
Будь ласка, дивіться коментарі до ls -lhвідповіді з причин, чому це насправді не відповідає на питання.
Олександр Батищев

2
Це не лише не відповідає на питання (як це обговорювалося в коментарях до відповіді Sirex), але й не додає нічого релевантного в жодній із існуючих відповідей: ОП не запитує про порядок сортування.
CVn

6
просто подумав, що сортування за розмірами - це потенційний
слідник, який,

1
У такому випадку люди повинні дивитись на те, як перелічити всі файли, упорядковані за розміром , приблизно за таким сценарієм.
CVn

Я вважаю, що це є гідним доповненням до відповідей, тим більше, що він детально розробляє відповідь Sirex
Dowlers

9

І це варіант для перерахування всього у порядку каталогу за розміром файлу (все ще читається людиною) у зростанні.

ls -lSrh

Чи вважаєте ви, що коментарі з іншої відповіді, які не відповідають на запитання , стосуються і цього?
Дан Даскалеску

@DanDascalescu. Ні. Ці коментарі не корисні. 2 відповіді, про які йдеться. Просто мої 2 копійки як хак, намагаючись зрозуміти, як перелічити розміри файлів у системі Linux, про яку він нічого не знає.
Dowlers
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.