Когда я пытаюсь вычислить размер файлов и директорий внутри каталога, это занимает больше времени. Используемая мной команда 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=-