Размер выходного файла для всех файлов определенного типа в каталоге рекурсивно? - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь рекурсивно получить сумму общего размера PDF-файлов в каталоге. Я попытался выполнить команду ниже в каталоге, но рекурсивная часть не работает должным образом, так как кажется, что он только сообщает о файлах в текущем каталоге и не включает в себя каталоги внутри. Я ожидаю, что результат будет около 100 ГБ, однако команда сообщает только о 200 МБ файлов.

find . -name "*.pdf" | xargs du -sch

Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Вы можете получить сумму размеров всех файлов, используя:

find . -name '*.pdf' -exec stat -c %s {} \; | tr '\n' '+' | sed 's/+$/\n/'| bc

Сначала find находит все файлы, как указано, и для каждого файла запускается статистика, которая печатает размер файла. Затем я заменяю всю новую строку на «+», используя tr, затем удаляю завершающий «+» для новой строки и передаю его в bc, который выводит сумму.

0 голосов
/ 07 сентября 2018

Используйте stat -c %n,%s, чтобы получить file name и size отдельных файлов. Затем используйте awk для суммирования размера и печати. ​​

$ find . -name '*.pdf' -exec stat -c %n,%s {} \; | awk -F, '{sum+=$2}END{print sum}'

На самом деле вам не нужно %n, так как вам нужна только сумма:

$ find . -name '*.pdf' -exec stat -c %s {} \; | awk '{sum+=$1}END{print sum}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...