我正在编写一个UNIX脚本来读取文本文件的大小,如果文件大小有些,则应该打印文本文件。如果它不是一个else循环执行,则该过程继续。
我使用以下命令查找该文本文件的大小。
ls -l ${filepath}/{filename}.lst | awk '{print $5}'
如何将其分配给脚本中的变量并将其置于if条件下?
或者示例if条件应该像if[$var==461]
这样有效吗?
或者是否有其他命令我可以用来查找文件的大小?
答案 0 :(得分:7)
您可以使用stat
命令,无需使用awk
。
例如在linux中使用bash,其中 myfile 是你的文件路径:
sz=$(stat -c '%s' myfile)
if [ $sz -eq 100 ]; then
echo "myfile is 100 bytes"
fi
取bash中算术二元运算符的相等命令-eq
的 note 。
或者,您可以将变量用于文件路径:
f=my/file/path
sz=$(stat -c '%s' $f)
if [ $sz -eq 100 ]; then
echo "$f is 100 bytes"
fi
答案 1 :(得分:2)
我不推荐stat
这是不可移植的,不是由POSIX指定的。
这是一种在变量中获取文件大小的更安全的方法。
size=$(ls -dnL -- "${filepath}/{filename}.lst" | awk '{print $5;exit}')
答案 2 :(得分:0)
在变量中指定文件大小,然后使用-eq
检查相等性size=`ls -l ${filepath}/{filename}.lst| awk '{print $5}'`
if [ $size -eq 461 ]
then
echo "MATCHED"
else
echo "NOT MATCHED"
fi
答案 3 :(得分:0)
简单地说 -
var=$(ls -l ${filepath}/{filename}.lst | awk '{print $5}')