我是 linux 新手。我在 linux 中有一个目录,其中包含大约 250,000 个文件,我需要找到与模式匹配的文件数。
我尝试使用以下命令:
ls -1 20061101-20131101_kh5x7tte9n_2010_* | wc -l
我收到以下错误消息:
-bash: /bin/ls: Argument list too long
0
请帮忙。提前致谢
原文由 db1 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答800 阅读✓ 已解决
2 回答3.2k 阅读
为此使用
find
可能会更好:在您的具体情况下:
find
将返回符合条件的文件列表。-maxdepth 1
将在路径中进行搜索,没有子目录( 感谢Petesh! )。-printf '.'
将为每个匹配打印一个点,这样带有新行的名称就不会导致wc -m
中断。然后
wc -m
将指示与文件数匹配的字符数。两种可能选项的性能比较:
让我们用这个模式创建 10 000 个文件:
然后将获得结果所需的时间与
ls -1 ...
或find ...
进行比较:find
快了 5 倍!但是如果我们使用ls -1f
( 再次感谢 Petesh! ),那么ls
甚至比find
还要快: