将stat | grep | awk分配给bash中的变量

时间:2013-07-08 16:10:26

标签: bash variables awk grep

我有一个文件名文件,我需要能够使用bash获取这些文件的大小。 我有以下脚本,但它会在不同的行上打印文件名和大小,如果可能的话,我希望它能在一行上完成。

#!/bin/sh
filename="$1"
while read -r line
do
    name=$line
    vars=(`echo $name | tr '.' ' '`)
    echo $name
    stat -x $name | grep Size: | awk '{ print $2 }'
done < "$filename"

我喜欢这种形式:

filename: $size

我该怎么做? (我正在使用OSX,因此有点奇怪的统计版本。)

3 个答案:

答案 0 :(得分:1)

-n传递给echo,以防止添加尾随换行符。所以改变

echo $name

echo -n $name

并在文件名和文件大小之间添加:分隔符

echo -n ${name}": "

答案 1 :(得分:0)

echo $name: $(stat -x $name | sed -n '/^Size:/s///p')

答案 2 :(得分:0)

这应该可以解决问题:

while read f
do
  echo "${f} : $(stat -L -c %s ${f})"
done < "${filename}"