【发布时间】:2017-02-07 03:57:02
【问题描述】:
外壳是 sh。
我一直在使用 for 循环:
for F in *.txt
do
echo `wc -w $F`
done
这是一直返回的字数和文件名。我不明白为什么它一直返回文件名;看起来它应该只返回文件中的单词数。
【问题讨论】:
-
man wc是你的朋友。 -
使用
echo是多余的;只需使用wc -w "$F"。
外壳是 sh。
我一直在使用 for 循环:
for F in *.txt
do
echo `wc -w $F`
done
这是一直返回的字数和文件名。我不明白为什么它一直返回文件名;看起来它应该只返回文件中的单词数。
【问题讨论】:
man wc 是你的朋友。
echo 是多余的;只需使用wc -w "$F"。
这是wc的默认行为,它在计数后显示文件名。
如果您只需要计数,请通过 STDIN 传递文件名:
wc -w <filename
另外,如果不使用for 遍历文件,您可以使用 globbing 一次获取文件名,wc 需要多个参数,所以不会有问题:
wc -w *.txt
在这种情况下,要删除文件名,请使用一些文本处理:
wc -w *.txt | awk '{print $1}'
这应该比您已经使用的fora 方法更快。
【讨论】: