Размер всех файлов определенного расширения в дереве каталогов

Я хочу узнать размер файла с расширением .o (объектный файл) в моей домашней папке.

Я могу найти все объектные файлы, используя

find . -name '*.o'

How могу ли я вычислить общий размер этих файлов?

1
задан 29 July 2017 в 09:44

2 ответа

Использовать флаг -exec для запуска команды du с ; (значение для каждого файла)

find . -name "*.o" -exec du -b {} \; | awk '{total+=$1}END{print total}' 

Пример вывода:

$ find . -name "*.txt"  -exec du -b {} \; | awk '{total+=$1}END{print total,"bytes" }'                                     
find: ‘./.cache/gvfs-burn’: Permission denied
find: ‘./.cache/unity’: Permission denied
852690242 bytes

find является рекурсивным - это означает, что он просматривает все подкаталоги. Если вы просто хотите получить общее количество всех *.o файлов в текущем каталоге, просто сделайте

du -b -c *.o
8
ответ дан 23 May 2018 в 06:47

с perl:

perl -le 'map { $sum += -s } @ARGV; print $sum' -- *.pdf

Размер всех не скрытых файлов PDF в текущем каталоге.

0
ответ дан 23 May 2018 в 06:47
  • 1
    Хорошо, но OP ищет файлы .o, и они могут быть в подкаталогах. Вы также можете добавить }{ до print $sum, чтобы избежать печати суммы для каждой итерации. Нам нужен только последний. – terdon♦ 26 August 2016 в 12:49

Другие вопросы по тегам:

Похожие вопросы: