我有 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 来输出字节。