Unix

計算許多 .png 文件佔用的磁碟空間

  • July 10, 2012

我有 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

這將回顯您找到的所有文件的總大小(以字節為單位)。

希望有幫助。

引用自:https://serverfault.com/questions/406388