我正在尝试编写条件语句,以便如果文件大于 1GB,它会在文件中打印该文件的名称,并跳过处理它。
#!/bin/bash
for f in *.dmp
do
if [ ! $(stat -c %s $f > 1000000000) ]; then
name=`basename ${f%.dmp}`
if [ -f ../tshark/$name.dat ]; then
echo "file exists, moving on...";
else
echo "Processing" $name;
tshark -PVx -r "$f" > ../tshark/$name.dat;
echo $name "complete, moving on...";
fi
else
echo $f "too large";
echo $f "\n" > tooLarge.txt;
fi
done
问题是! $(stat -c %s $f > 1000000000)
不工作。
如果有任何建议,我将不胜感激。
最佳答案
所以,如果您还没有看到 Advanced Bash Scripting Guide , 你应该。是的,它以 Bash 为中心,但对于像这种有条件的事情,它也是一个很好的引用。
现在,您编写的内容会尝试执行 stat -c %s $f > 1000000000
作为命令(它位于 $()
构造的括号内,据我所知,它相当于旧的反引号。你想要的是 $(stat -c %s $f) -le 1000000000
执行 stat -c %s $f
然后检查它是否小于或等于到 1000000000
。这(即 a<=b
)在逻辑上是 !(a>b)
的 equivalent。
关于linux - 查找条件的文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18322187/