Answers:
试试这个(需要find
的-printf
支持):
find <expr> -type f -printf '.' | wc -c
它比计数行数更可靠,更快。
请注意,我使用的find
是printf
,而不是外部命令。
让我们坐下:
$ ls -1
a
e
l
ll.sh
r
t
y
z
我的摘要基准:
$ time find -type f -printf '.' | wc -c
8
real 0m0.004s
user 0m0.000s
sys 0m0.007s
用实线表示:
$ time find -type f | wc -l
8
real 0m0.006s
user 0m0.003s
sys 0m0.000s
所以我的解决方案更快=)(重要的部分是real
线路)
-printf '.'
为什么不
find <expr> | wc -l
作为一个简单的便携式解决方案?您最初的解决方案是为找到的每个单个文件产生一个新的过程 printf
,这非常昂贵(就像您刚刚发现的那样)。
请注意,如果您嵌入了带有换行符的文件名,这将是多余的,但是如果您拥有该文件名,那么我怀疑您的问题会更加深入。