【发布时间】:2014-03-26 05:44:54
【问题描述】:
我想运行一个find 命令来查找某个文件列表,然后遍历该文件列表以运行一些操作。我还想找到该列表中所有文件的总大小。
我想先列出文件,然后再进行其他操作。有没有一种简单的方法可以只报告列表中所有文件的总大小?
本质上,我试图在下面的代码 sn-p 中为“total_size”变量找到一个单行:
#!/bin/bash
loc_to_look='/foo/bar/location'
file_list=$(find $loc_to_look -type f -name "*.dat" -size +100M)
total_size=???
echo 'total size of all files is: '$total_size
for file in $file_list; do
# do a bunch of operations
done
【问题讨论】:
-
您可以在
find命令中使用printf "%p %s\n"来显示名称+大小。 -
@fedorqui 如果她的
find版本支持-printf。某种形式的-exec stat -f '%z' {} \;(取决于您的系统对stat的实现)也可以工作。 -
@fedorqui:您还必须在 for 循环之前拆分文件名和大小...
-
无论如何都不建议将文件名列表存储在平面字符串中,因为您无法轻松处理包含空格的文件名。