Назад | Перейти на главную страницу

Как я могу рассчитать общий размер очень большого количества файлов с определенным расширением?

У меня есть каталог в Linux, содержащий большое количество файлов (десятки тысяч), а также каталоги, которые также могут содержать тысячи файлов.

В какой-то момент следующая команда du выдает ошибку «Слишком длинный список аргументов»:

du -ch data/*.txt

Если я пропущу через команду find, я не получу "общий итог",

find data/ -iname '*.txt' | xargs du -ch

Сделайте что-нибудь вроде этого:

find data -iname '*.txt'  |xargs stat -c '%s' |awk '{total=total+$1}END{mbtotal = total / 1000000 ; print mbtotal}'

По сути, получите список файлов, используя find, получите размер файла каждого обращения, используя stat (форматирование вывода так, чтобы вы просто отображали размер), а затем суммируйте его, используя awk (в моем примере делим на 1000000, чтобы получить что-то вроде мегабайт; знаменатель меняйте по своему усмотрению).

Вы также можете проделать подобное упражнение на Perl или на любом другом языке, который вы хотите использовать.