du сообщает о размере для каталога 4 KBS больше, чем суммарный итог содержания

Вместо того, чтобы передать его по каналу к sort, используйте ls.

find . -maxdepth 1 \! -type l -exec ls -d {} +

find . -maxdepth 1 \! -type l | xargs ls -d

При использовании оболочки zsh, Вы могли бы использовать их непортативные расширения шарика:

ls -d *(^@)
2
09.12.2013, 07:47
2 ответа

control сам каталог имеет размер 4, и он включен в Вашу первую команду. Второй вариант не вычисляет размер каталога, потому что Вы не передаете его du, но только его содержание.

Существует также возможность, что у Вас есть скрытые файлы (точечные файлы), которые исключены при расширении * шарик так, чтобы du не беспокоится ими.

7
27.01.2020, 21:51

Во-первых, число не находится в байтах. Единица является или килобайтами или полукилобайтами, в зависимости от Вашей реализации.

Когда Вы работаете du ./control/*, Вы получаете информацию для файлов, содержавшихся в каталоге control, но не для каталога control самостоятельно. Каталоги имеют размер также — информация о файлах, которые они содержат, должен быть сохранен где-нибудь. Размер control самостоятельно 4 единицы.

1
27.01.2020, 21:51
  • 1
    я отредактировал свой Q. Дайте свое подтверждение на том, что я заявил. –  Ravi 09.12.2013, 05:37
  • 2
    @Ravi вывод ls -l шоу, что Ваш du реализация использует единицы 1 КБ. –  Gilles 'SO- stop being evil' 09.12.2013, 12:21

Теги

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