如何查找文件的大小并将其分配给UNIX中的变量

时间:2014-08-23 16:45:27

标签: shell unix awk scripting

我正在编写一个UNIX脚本来读取文本文件的大小,如果文件大小有些,则应该打印文本文件。如果它不是一个else循环执行,则该过程继续。

我使用以下命令查找该文本文件的大小。

ls -l ${filepath}/{filename}.lst | awk '{print $5}'

如何将其分配给脚本中的变量并将其置于if条件下?
或者示例if条件应该像if[$var==461]这样有效吗?

或者是否有其他命令我可以用来查找文件的大小?

4 个答案:

答案 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}')