Получить общий размер папок с помощью find & du
Я пытаюсь получить размер каталогов с именем "bak" с помощью find и du.
Я делаю это: find -name bak -type d -exec du -ch '{}' \;
Но он возвращает размер для каждой папки с именем "bak", а не итоговой.
В любом случае, чтобы получить их? Спасибо:)
Ответы
Ответ 1
Используйте xargs(1)
вместо -exec
:
find . -name bak -type d | xargs du -ch
-exec
выполняет команду для каждого найденного файла (проверьте документацию find(1)
). Piping to xargs
позволяет объединять эти имена файлов и запускать только du
один раз. Вы также можете сделать:
find -name bak -type d -exec du -ch '{}' \; +
Если ваша версия find
поддерживает его.
Ответ 2
Попробуйте du -hcs
. С manpage:
-s, --summarize
display only a total for each argument
Ответ 3
Feed du с результатами поиска:
du -shc $(find . -name bak -type d)
Ответ 4
Если файлов много, использование -exec... +
может выполняться несколько раз, и вы получите несколько промежуточных итогов.
Альтернатива - передать результат поиска:
find . -name bak -type d -print0 | du -ch --files0-from=-