Есть ли способ быстро получить точный размер для каталога (включая, рекурсивно, все его подкаталоги)? Я не хочу размеры подкаталогов, я просто имею в виду, что они должны быть рекурсивно включены в общий размер отчета.
В противном случае, способ получить приблизительный размер? Я думаю что-то вроде этого, df
что дает быстрый ответ для всей файловой системы, но на этот раз для определенного каталога (и его подкаталогов).
Решения, использующие, du
кажется, требуют времени, когда данный каталог содержит тысячи вложенных папок.
du
- единственный метод, который мне известен. Проблема заключается в том, что данные распределены по всей иерархии, поэтому их необходимо подсчитать с помощью инструмента для получения подсчета.Ответы:
Я считаю это весьма полезным.
или получить разбивку внутри каталогов
а затем с видом, если у него есть много subdirs
Причина, по которой я использую опцию -m, заключается в том, что я получаю вывод в мегабайтах. Я считаю, что это легче сравнивать визуально (когда я не получаю смесь единиц, например, сравниваю 999 КБ и 1 МБ против 999000 МБ и 1000000 МБ), дополнительное преимущество заключается в том, что вы можете передавать выходные данные в сортировку.
Поместите все это в фоновый режим и перенаправьте вывод, это займет время, какой бы метод ни использовался, это обход многих файлов, которые займут время.
Обратите внимание на обратную сортировку, так что большие находятся в начале. Добавьте это к запуску cron каждые n минут.
Затем с псевдонимом Ducache у вас достаточно современное использование каталогов.
источник
shopt -s dotglob
, иначеdu -sm Directory/*
скрытые файлы / каталоги не будут учитываться.предоставит вам сводную информацию об общем размере в формате «человек».
Так как вы искали альтернативу
du
, я попробовалfind
, но это точно так же:источник
du
занимает слишком много времени, так как это дает точный результат. Я надеялся на инструмент / команду, которая обеспечивает быстрый и грязный приблизительный ответ.df
но это работает на всей файловой системе.Возможно, вам не понравится мой ответ, но я думаю, что лучший способ сделать то, что вы хотите, это регулярно запускать "du-s" в фоновом режиме, используя cron, и сохранять результат в файле. Затем, когда вы хотите приблизительное значение, используйте значение из файла. Вы сами решаете, как часто бегать по дю. Я не вижу более быстрого способа получить ценность. Команда du эффективна для того, что она делает.
Единственный способ сделать это очень быстро - это создать файловую систему для каталога, тогда df очень быстро даст вам нужный ответ.
Если быстрее узнать все в файловой системе, кроме вашего каталога, вы можете запустить df для файловой системы, du для всего, кроме вашего каталога, и вычесть.
источник
Он не совсем соответствует вашим потребностям (не однострочный), но гораздо проще, чем другие решения:
Эта команда даст вам размер каталога и подкаталога и размер самого большого файла или подкаталога в текущем каталоге.
PS: Это
head -2
в том случае, если подкаталог занимает все место текущего каталога и прослушивается перед текущим.источник