Получить общий размер папок с Find & Du - PullRequest
20 голосов
/ 21 марта 2012

Я пытаюсь получить размер каталогов с именем "bak" с помощью find и du.

Я делаю это: find -name bak -type d -exec du -ch '{}' \;

Но он возвращает размер для каждой папкиназванный "бак" не полный.

В любом случае, чтобы получить их?Спасибо:)

Ответы [ 4 ]

22 голосов
/ 21 марта 2012

Используйте xargs(1) вместо -exec:

find . -name bak -type d | xargs du -ch

-exec выполняет команду для каждого найденного файла (см. Документацию find(1)). Трубопровод к xargs позволяет объединять эти имена файлов и запускать du только один раз. Вы также можете сделать:

find -name bak -type d -exec du -ch '{}' \; +

Если ваша версия find поддерживает это.

4 голосов
/ 21 марта 2012

Попробуйте du -hcs.С справочной страницы:

 -s, --summarize
      display only a total for each argument
2 голосов
/ 22 января 2015

Feed du с результатами поиска:

du -shc $(find . -name bak -type d)
0 голосов
/ 29 января 2019

Если существует много файлов, использование -exec ... + может быть выполнено несколько раз , и вы получите несколько промежуточных итогов.

Альтернативой является передача результата поиска:

find . -name bak -type d -print0 | du -ch --files0-from=-
...