Задача: просуммировать размер всех файлов в директории. Первое, что приходит на ум - использовать команду du
.
du -hs
Но она показывает размер, занимаемый файлами (и под-директориями!) на диске. А часто нужно посчитать именно кол-во байтов во всех файлах. Тогда можно сделать так:
find . -type f -exec ls -l \{\} \; | awk '{s+=$5} END {print s}'
Так как
find
весьма мощная утилита, то изменяя ее параметры можно подсчитать суммарный объем данных в файлах, удовлетворяющих заданным условиям.Как правильно подсказали в комментариях, есть еще более короткое и правильное решение:
find . -type f -printf '%s\n' | awk '{SUM+=$1} END {print SUM}'
3 комментария:
Недавно открыл для себя удивительные графические инструменты для наглядного представления чем занято пространство на диске и разделе.
Можно производить поиск того, что следует в первую очередь сносить на диске, видеть организацию занятого (и свободного) пространства по типам файлов, и вообще интересно видеть красиво организованные структуры :)
Удобно администрировать сильно вложенные пользовательские папки - находить там фильмы, музыку, дубликаты программ - всё что можно переносить на общий доступ или исключать из бекапа :)
Первая мне показалась более красивой - так что я нашёл её аналог для win.
Kdirstat - KDE
gdmap - GNOME
WinDirStat - Windows (GPL)
Всем при запуске (или из командной строки) нужно указать папку или диск для сканирования.
А приведённый пример по подсчёту байтов я бы немного упростил :)
find . -type f -printf '%s\n' | awk '{SUM+=$1} END {print SUM}'
find действительно мощная утилита :)
Упрощение принимается, решение получается еще более элегантным :)
Отправить комментарий