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