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