Du -h -max-depth = 1 занимает много времени

Когда я пытаюсь вычислить размер файлов и директорий внутри каталога, это занимает больше времени. Используемая мной команда du -ch --max-depth=1.

Есть ли другой способ вычисления общего размера файлов и папки?

Спасибо

Ответ 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=-