Які команди мені потрібні, щоб Linux ls
показав розмір файлу в МБ?
Які команди мені потрібні, щоб Linux ls
показав розмір файлу в МБ?
Відповіді:
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, що вказав на це.
ls
? Стандартls
не має такого аргументу. З розширенням xsi ls
є -s
прапор, завдяки чому він повідомляє кількість блоків, але стандартного прапора немає --block-size
.
--block-size
Coreutils 8.5, що встановлено в моїй системі Debian Squeeze. Оскільки питання було явним для Linux і не вказало нічого іншого, я визнаю, що я припустив, що користувальницька область зосереджена навколо ядер GNU. Я оновив відповідь, щоб уточнити це. (Окрім того, у Open Group також не є -h. :)
)
--block-size
це розширення GNU. Я підозрюю, що Mac OS X не використовує GNU ls
.
ls -lh
надає читабельні людиною розміри файлів, довгий формат.
Він використовує суфікси k, M, G і T (або суфікс для байтів) за необхідності, тому число залишається невеликим, наприклад, 1.4K
або 178M
.
-h
є розширенням GNU coreutils, а не базовим POSIX.
Зауважте, що це не відповідає на запитання точно так, як задано. Якщо ви хочете, щоб розміри були строго в MiB навіть для невеликих або гігантських файлів, відповідь Майкла Кьорлінга робить це для ядер GNUls
.
h
її набагато простіше, ніж--block-size=M
ls -l
взагалі використовує, якщо не люди? : p
ls -l
результатів - це неправильний спосіб робити речі, 99% часу. unix.stackexchange.com/questions/128985/why-not-parse-ls . Цей 1% є щедрим і в значній мірі обмежується одноразовими написаннями для одноразового використання, а не сценарієм, який ви збираєтеся використовувати неодноразово у невідомих іменах.
ls -lhS
сортувати за розміром у читаному для людини форматі
ls -lh
відповіді з причин, чому це насправді не відповідає на питання.
І це варіант для перерахування всього у порядку каталогу за розміром файлу (все ще читається людиною) у зростанні.
ls -lSrh
--block-size=M
викликатиM
показ суфікса поруч із розміром, і ви можете--block-size=1M
його опустити. Можливо, варто також зазначити, що для цього вам потрібні ідентифікатори GNU (більшість невбудованих систем Linux матимуть GNU ls).