如何找到某些指定文件的大小?

发布于 2024-07-21 21:17:56 字数 372 浏览 5 评论 0原文

该命令尝试总结大小:

find . -iname "*.dmg" -exec du -sh '{}' \; 3&> /dev/null |
    awk '{print $1}' | summming_up_program???

您能找到更简单的解决方案吗?

Ubuntu 解决方案。 感谢 Ayman 的 Awk 结束。

find . -iname "*.dmg" -printf '%b\n' |
    awk 'BEGIN { s = 0 } {s += $1 } END { print "%dMB", s / 2^20 }'

The command tries to sum up the sizes:

find . -iname "*.dmg" -exec du -sh '{}' \; 3&> /dev/null |
    awk '{print $1}' | summming_up_program???

Can you find a simpler solution?

Ubuntu Solution. Thanks for the Awk-end to Ayman.

find . -iname "*.dmg" -printf '%b\n' |
    awk 'BEGIN { s = 0 } {s += $1 } END { print "%dMB", s / 2^20 }'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

北渚 2024-07-28 21:17:56
find . -iname '*.dmg' -exec stat -f '%z' '{}' \; |
     awk 'BEGIN { s = 0 } {s += $1 } END { print s }'

stat 用于获取文件的大小。 awk 用于计算所有文件大小的总和。

编辑:

不分叉 stat 的解决方案:

find . -iname '*.dmg' -ls | 
     awk 'BEGIN { s = 0 } {s += $7 } END { print s }'
find . -iname '*.dmg' -exec stat -f '%z' '{}' \; |
     awk 'BEGIN { s = 0 } {s += $1 } END { print s }'

stat is used to obtain the size of a file. awk is used to sum all file sizes.

Edit:

A solution that does not fork stat:

find . -iname '*.dmg' -ls | 
     awk 'BEGIN { s = 0 } {s += $7 } END { print s }'
转身泪倾城 2024-07-28 21:17:56
wc -c *.pyc | tail -n1 | cut -f 1 -d ' '

可能比通过管道传输文件更快。 wc -c 不计算字节数,它从 inode 检索大小...或者我的硬盘读取速度为 717 GB/s :-)

$ time wc -c very-big.pcap
5394513291 very-big.pcap
real    0m0.007s
user    0m0.000s
sys     0m0.000s
wc -c *.pyc | tail -n1 | cut -f 1 -d ' '

Might be faster then cat'ing the files through the pipe. wc -c does not count the bytes, it retrieves the size from inode... or my hdd has a reading speed of 717 GB/s :-)

$ time wc -c very-big.pcap
5394513291 very-big.pcap
real    0m0.007s
user    0m0.000s
sys     0m0.000s
原谅我要高飞 2024-07-28 21:17:56

猫 *.dmg | 厕所-c

cat 将所有文件复制到 stdout,wc 计算转储文件的大小。 没有任何内容写入磁盘。

虽然效率不高,但我也能理解:)

cat *.dmg | wc -c

cat copies all the files to stdout, and wc counts the size of what was dumped. Nothing gets written to disk.

Not as efficient, but even I can understand it :)

淡淡绿茶香 2024-07-28 21:17:56

增强了 Ayman 的非分叉命令:

find . -iname '*.dmg' -ls 3&> /dev/null | 
      awk 'BEGIN { s = 0 } {s += $7 } END { print "%dGB", s / 2^30 }'

感谢 Ayman 纠正了我最初的回复。

Enhanced Ayman's non-forking command:

find . -iname '*.dmg' -ls 3&> /dev/null | 
      awk 'BEGIN { s = 0 } {s += $7 } END { print "%dGB", s / 2^30 }'

Thanks to Ayman for correcting my initial reply.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文