wc
是否可以仅返回一系列目录中的某些文件(例如 .txt 文件)的组合字数统计?
答案1
使用 GNU wc (至少),您可以将find
with的结果组合起来wc
,如下所示:
find folder/ -name '*.txt' -print0 | wc -w --files0-from=-
这为您提供了所有功能find
(如果您只是想找到所有以诚实结尾的文件,那就有点矫枉过正了.txt
),并且它甚至可以处理最奇怪的文件名(例如包含换行符)。
答案2
我对你的情况的理解正确吗?因此,您说您位于一个名为 Documents 的文件夹中,并且该文件夹内有多个文件夹,因此您将目录 (cd) 更改为该目录,并希望计算每个文件夹中有多少个 .txt 文件深入到该目录中。子文件夹?
如果这就是您的意思,那么您可以这样做:
$ ls -R *.txt | wc -l
ls = 列表。 -R = 递归每个子文件夹 *.txt = 任意数量的以 .txt 结尾的任意字符
| = 传递给.
wc -l = 数一下有多少。
答案3
这是我刚刚通过 xargs 制作的一个很好的单行代码 - 在 macOS 上进行了测试:
find . | grep -E "(.*\.js.*|.*\.txt|.*\.css|.*\.htm.*|.*\.sh|.*\.scss|.*\.md|.*\.java|.*\.conf|.*\.yaml)" | sed "s/^/\"/" | sed "s/$/\"/" | xargs -J thefile wc thefile
这处理文件名中的空格。也许在 Linux 中将 -J 替换为 -Y ?割草机切断了我的以太网与我的 Linux 盒子的连接,所以我目前无法在那里进行测试。