1

我有一个文件名文件,我需要能够使用 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,因此 stat 的版本有点奇怪。)

4

3 回答 3

1

传递-necho以防止添加尾随换行符。所以改变

echo $name

echo -n $name

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

echo -n ${name}": "
于 2013-07-08T16:24:02.220 回答
0

这应该可以解决问题:

while read f
do
  echo "${f} : $(stat -L -c %s ${f})"
done < "${filename}"
于 2013-07-08T16:32:29.350 回答
0
echo $name: $(stat -x $name | sed -n '/^Size:/s///p')
于 2013-07-08T16:12:05.203 回答