У меня есть 357 файлов .png, расположенных в разных подкаталогах текущего каталога:
settings# find . -name \*.png |wc -l
357
settings# find . -name \*.png | head
./assets/authenticationIcons/audio.png
./assets/authenticationIcons/bbid.png
./assets/authenticationIcons/camera.png
./bin/icons/ca_video_chat.png
./bin/icons/ca_voice_control.png
./bin/icons/ca_vpn.png
./bin/icons/ca_wifi.png
Есть ли один инструмент для расчета общего дискового пространства, занимаемого ими (до того, как я их уничтожу)?
Я пробовал (безуспешно):
settings# find . -name \*.png | xargs du -s
4 ./assets/support/wifi_locked_icon_white.png
1 ./assets/support/wifi_vpn_icon_connected.png
1 ./assets/support/wi_fi.png
1 ./assets/support/wi_fi_conected.png
8 ./bin/blackberry-tablet-icon.png
2 ./bin/icons/ca_about.png
2 ./bin/icons/ca_accessibility.png
2 ./bin/icons/ca_accounts.png
2 ./bin/icons/ca_airplane_mode.png
2 ./bin/icons/ca_application_permissions.png
1 ./bin/icons/ca_balance.png
Может быть что-то вроде:
find . -type f -name "*.png" -printf '%s\n' | awk '{ sum += $1 } END { print sum }'
? Кажется, у меня работает - результаты будут в байтах.
du
мой любимый ответ. Если у вас есть фиксированная структура файловой системы, вы можете использовать:
du -hc *.png
Если вам нужно добавить подкаталоги, просто добавьте:
du -hc *.png **/*.png **/**/*.png
и т. д. и т. д.
Однако это не очень полезная команда, поэтому используйте команду find:
TOTAL=0;for I in $(find . -name \*.png); do TOTAL=$((TOTAL+$(du $I | awk '{print $1}'))); done; echo $TOTAL
Это будет отражать общий размер в байтах всех найденных вами файлов.
Надеюсь, это поможет.
find . -name *.png -print0 | du -c --files0-from=- | tail -1
В размерах логических блоков; вставьте -b в команду du для вывода байтов.
Чтобы найти размер в килобайтах (если в столбце 5 ls -l указано 'size'
find . -name \*.png -exec ls -lk {} \; | awk '{ sum +=$5} END {print sum}'