du
не следует сообщать о разных размерах, поскольку *
просто расширяется до фактических имен папок в Bash, не так ли?
Должно быть, это всего лишь один du
процесс, и он пытается быть умным.
Обоснование: Если бы du *
не было умного, было бы трудно сделать это умным. С другой стороны легко, сделать умного du
«немого» довольно просто . Если вам нужны полностью независимые результаты, просто запустите du
-s для двух каталогов.
Несколько общих примеров использования отдельных du
ключей:
for d in *; do du -hs "$d"; done find . -exec du -hs {} \;
Они отличаются в деталях. Один из find
них может быть настроен (например, начать с find . -type d …
).
Также проверьте --apparent-size
вариант, если ваш du
поддерживает его.
du
Другое дело, будет ли вам полезен «тупой» или нет, поскольку вы хотите «найти, какие файлы / папки занимают больше всего места». Другой ответ правильный:
Если файлы в папке соответствуют inode с несколькими ссылками, удаление их в этой папке ничего не изменит.
Умное поведение, du
кажется, соответствует вашим потребностям гораздо больше, чем (вынужденное) «тупое». Мой совет - воспользоваться этим, и факт du
обрабатывает свои аргументы в заданной последовательности. Это означает, что указанный размер самого последнего объекта - это то, что вы получите, если удалите этот объект и только этот объект (если только он не содержит жестких ссылок на еще одно место, куда этот конкретный объект du
не заглянул).
В вашем примере расширенная команда была, по-видимому:
du -hs 2018-09-21_16-14-57 2018-10-06_07-04-27
Результат говорит, что вы получите, 910M
если вы просто удалите 2018-10-06_07-04-27
. Теперь попробуйте другую последовательность:
du -hs 2018-10-06_07-04-27 2018-09-21_16-14-57
Последняя строка вывода скажет вам, сколько места вы получите, если вы удалите 2018-09-21_16-14-57
только.
На вашем месте я бы также исследовал ncdu
(интерактивный инструмент) и его поведение.