`du -s .` и `du -hs .` дают разные результаты (на OS X)

Я бы использовал sed для этого:

sed -E 's/, /\n/;s/([A-Z]{2}) /\1\n/' States  
Some lines (rows) of text
...
United States
Memphis
TN
38116-3252
...
More lines of text
...
United States
Austin
TX
78726

Первое выражение s /, / \ n / ищет запятую, за которой следует пробел, и заменяет ее новой строкой.

Второе выражение s / ([A-Z] {2}) / \ 1 \ n / ищет любые две заглавные буквы, за которыми следует пробел, и заменяет их этими буквами, за которыми следует новая строка.


sed --version
sed (GNU sed) 4.2.2
12
04.01.2017, 23:25
2 ответа

Проблема в том, что du возвращает размер в количестве блоков по 512 байт.

Чтобы иметь размер в КБ, вы можете использовать параметр -k , который вместо этого использует 1024-байтовые блоки:

$ du -ks .                            
43351596    .
$ du -khs .
 41G    .
3
27.01.2020, 19:54

du без спецификатора выходного формата показывает использование диска в блоках по 512 байтов, а не килобайт . Вместо этого вы можете использовать параметр -k для отображения в килобайтах. В OS X (или macOS, или MacOS, или Macos; в зависимости от того, что вам нравится) вы можете настроить единицу измерения по умолчанию, установив переменную среды BLOCKSIZE (это также влияет на другие команды).

23
27.01.2020, 19:54

Теги

Похожие вопросы