从ls输出获取文件大小

时间:2017-05-31 15:09:15

标签: regex linux bash

我有一个名为$lsoutput的变量,其中存储了ls -l命令的结果 它的内容是

  • -rw-r - r-- 1 root ftp 44 Apr 29 2003 first_file.txt
  • 我想获得该文件的大小。
  • 我使用了以下正则表达式
if [[ "$lsoutput" =~ ^[-rwx]{10}[[:space:]][[:digit:]]+[[:space:]][[:alnum:]]+[[:space:]][[:alnum:]]+[[:space]]([[:digit:]]+) ]]
    echo ${BASH_REMATCH[1]}
fi

不幸的是,这个正则表达式不起作用。这有什么问题?你能提供正确的吗?谢谢你的帮助

3 个答案:

答案 0 :(得分:1)

有更简单的方法。

stat --format=%s <FILE>

上面的命令以字节为单位打印文件的大小。

解析ls输出is not recommended

答案 1 :(得分:0)

使用起来不容易:

ls -l | awk '{print $5}'

只打印文件大小?

答案 2 :(得分:0)

with cut:

ls -l|tr -s ' ' |cut -d' ' -f5