我的文件夹中有以下文件:
ls myfolder
filefoo filebar filefoobar
例如filefoo的内容为:
total: 379400041
cache_object://localhost/active_requests 379400041 6778 0-13955161 0-14111309 0-12250718 0-11422369 0-11901178 0-11781835 0-12687756 0-17663930 5-110207691 6-123940805 2-39477289 0-0 0-0 0-0 0-0 0-0 0-0 0-0 0-0 0-0 0-0 0-0 0-0 0-0
bla bla bla
注意:其余文件具有相同的内部结构,但数字会发生变化
因此,我感兴趣的从这些文件中提取的值是“total:number”。此值始终位于每个文件的第一行:
find myfolder -type f -exec awk '/^total:/{print $NF}' {} +
379400041
35402285
8589934592
我应该将它与这个变量进行比较:
max="1073741824"
所以我需要的是,如果这些值中的任何一个超过 $max 变量(值 > $max),它应该将文件输出到输出列表。示例(非功能性):
if (( "value" > "$max" )); then
# or if [ "value" -gt "$max" ]; then
the command to send the file to a list is missing > output.lst
else
echo "do nothing"
fi
预期输出:
cat output.lst
filefoobar
因为 filefoobar 有 8589934592 并且这个值 > $max
怎么办?谢谢
答案1
尝试这个:
$ max="1073741824"
$ ( cd myfolder
for file in *
do
if (( `awk <$file '/^total/ {print($2)}'` > $max ))
then echo $file
fi
done
) >output.lst
请注意重音符号的使用,并且“=”周围没有空格。
当然这里没有错误检查。