Unix
計算許多 .png 文件佔用的磁碟空間
我有 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
是否有一個 oneliner 來計算它們佔用的總磁碟空間(在我 pngcrush 他們之前)?
我試過(不成功):
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
這將回顯您找到的所有文件的總大小(以字節為單位)。
希望有幫助。