递归打印文件长度

dov*_*vah 3 text-processing wc

如何打印目录中所有 *.txt 文件的长度?

例如:目录内容:

FileA.txt 
FileB.txt
FileC.txt 
FileA.csv
Run Code Online (Sandbox Code Playgroud)

*.txt 长度:

less FileA.txt | wc -l 
43
less FileB.txt | wc -l 
13
less FileC.txt | wc -l 
3
Run Code Online (Sandbox Code Playgroud)

所需的输出(写入输出文件):

43
13
3
Run Code Online (Sandbox Code Playgroud)

(我正在尝试,但没有成功:ls *.txt| while read FN; do wc -l < $FN >> output; done- 输出空文件)

cas*_*cas 5

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

或者如果您不希望输出中的文件名(这里假设文件名不包含换行符):

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

如果有太多的 *.txt 文件无法放入单个 shell 命令行并假设您的 find 支持-maxdepth

find . -maxdepth 1 -type f -name '*.txt' -exec wc -l {} + | 
    awk '$2 != "total" {print $1}'
Run Code Online (Sandbox Code Playgroud)

(请注意,与前一个相反,该文件不会对文件列表进行排序,将包含隐藏文件并排除包含指向常规文件的符号链接的非常规文件)。

当然,您可以将其中任何一个的输出重定向到一个文件或将其通过管道传输到另一个程序中以进行更多处理。