2013-04-16 2 views
12

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

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

Благодаря

ответ

15

С помощью команды 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=-