我在几个子文件夹中有几百个 txt 文件,我想计算每个 txt 文件中的行数。我可以使用以下命令对当前目录中的所有 txt 文件执行此操作:
for f in *.txt; do wc -l "$f"; done
其输出:
[number] [txt filename]
[number] [txt filename]
[number] [txt filename]
这很好。但是,我不想导航到每个子文件夹数百次。目录结构为:
-main
-folder1
textfile1.txt
textfile2.txt
textfile3.txt
-folder2
textfile4.txt
textfile5.txt
textfile6.txt
-folder3
textfile7.txt
textfile8.txt
textfile9.txt
...and so forth
值得注意的是,文本文件的 .txt 扩展名前包含空格和几个点。不过,使用上面写的 wc -l 不会产生任何错误。在运行 MacOS 的 Mac 上使用终端,其行为大部分类似于 BSD。
答案1
find /the/path/to/search/ -name "*.txt" -exec wc -l {} \;
答案2
如果目录结构是不变的,那么通配符可以安全地扩展列表(假设没有太多结果文件超出命令行长度):
wc -l main/*/*.txt
或者
wc -l */*/*.txt
...取决于您从哪里开始以及您想要包含的内容。
答案3
find /yourpath -type f -name "*.txt" -exec wc -l {} /dev/null \;