如何将文件的字数附加到文件而不添加总数

如何将文件的字数附加到文件而不添加总数

我正在运行一个 bash 脚本,其中将参数(文件)的行数附加到另一个文件。它做得正确,但我不断收到一行“total X”,X 是所有行数加在一起的总和。如果参数数量高于某个数字 X,如何添加参数以仅附加总数?这就是我目前所拥有的:

wc -l $@ >> $1

答案1

我认为你不能以多参数形式抑制总数。

我能想到的最简单的方法是在需要时坚持使用单参数形式:

if [ "$#" -lt 5 ]
then
    for f in "$@"; do wc -l -- "$f"; done >>"$1"
else
    wc -l "$@" >> "$1"
fi

答案2

wc如果行数太少而无法获得总计,请从输出中删除最后一行。

word_counts=$(wc -l -- "$@")
newline='
'
if [ "$#" -le 9 ]; then
  word_count=${word_count%"$newline"*}
fi
printf '%s\n' "$word_count" >>"$1"

请注意其他变量替换中及其周围的双引号"$@",如果没有这个,您的脚本将在包含空格(和其他一些特殊字符)的文件名上中断,而绝对不会带来任何好处。另请注意--wc -l -- "$@"如果文件名以 a 开头-(如果没有--wc则会将该文件名解释为选项)。

相关内容