Ответ 1
Команда du
извлекает использование диска всеми файлами в каталоге и всеми подкаталогами (рекурсивно) по умолчанию. Таким образом, время, затрачиваемое на du
, связано с количеством проанализированных файлов. Параметры -s
или --summarize
и --max-depth
влияют только на вывод команды (а не на само сканирование).
Некоторые параметры du
, которые ограничивают сканирование файлов, - это однонаправленная система, --exclude и --exclude-from.
Если вы не хотите переписывать в sub-dirs, вы можете использовать find вместо этого, что дает вам гораздо больше контроля над тем, какие файлы нужно анализировать. Но он не может суммировать использование диска рекурсивно.
find /path/to/dir -maxdepth 1 -printf "%k\t%p\n"
Обратите внимание, что %k
всегда возвращает использование диска в 1k-блоках, а использование дискового массива для зарегистрированных дисков может быть меньше или немного больше размера файла, возвращаемого командой %s
команды ls
. Таким образом, "% k" ведет себя как команда du
для отдельных файлов.
Если вы хотите объединить функции find
и du
, вы можете объединить их оба с помощью чего-то вроде.
find . -maxdepth 1 -name "xyz*" -print0 | du --files0-from=-