如何循环遍历目录并获取每个 txt 文件的 wc?

ENS*_*ENS 4 linux bash shell sh

外壳是sh。

我一直在使用 for 循环:

for F in *.txt
do
echo `wc -w $F`
done
Run Code Online (Sandbox Code Playgroud)

这已返回字数和文件名。我不明白为什么它不断返回文件名;看起来它应该只返回文件中的单词数。

hee*_*ayl 10

这是 的默认行为wc,它在计数后显示文件名。

如果您只想要计数,请通过 STDIN 传递文件名:

wc -w <filename
Run Code Online (Sandbox Code Playgroud)

另外,在不使用 迭代文件的情况下for,您可以只使用 globbing 一次获取文件名,wc采用多个参数,这样就不会出现问题:

wc -w *.txt
Run Code Online (Sandbox Code Playgroud)

在这种情况下,要删除文件名,请使用一些文本处理:

wc -w *.txt | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)

这应该比for您已经采用的方法更快。