计算多个 .png 文件占用的磁盘空间

计算多个 .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

有没有一行程序可以计算它们占用的总磁盘空间(在我用 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

答案1

也许是这样的:

find . -type f -name "*.png" -printf '%s\n' | awk '{ sum += $1 } END { print sum }'

? 对我来说似乎有效 – 结果将以字节为单位。

答案2

du是我最喜欢的答案。如果你有一个固定的文件系统结构,你可以使用:

du -hc *.png

如果需要添加子目录,只需添加:

du -hc *.png **/*.png **/**/*.png

等等等等

但是,这不是一个非常有用的命令,因此使用您的查找:

TOTAL=0;for I in $(find . -name \*.png); do  TOTAL=$((TOTAL+$(du $I | awk '{print $1}'))); done; echo $TOTAL

这将显示您找到的所有文件的总大小(以字节为单位)。

希望有所帮助。

答案3

要查找以 KB 为单位的大小(只要 ls -l 的第 5 列是“size”

find . -name \*.png -exec ls -lk {} \; | awk '{ sum +=$5} END {print sum}'

答案4

find . -name *.png -print0 | du -c --files0-from=- | tail -1

以逻辑块大小为单位;在 du 命令中插入 -b 来输出字节。

相关内容