当 xargs 不起作用时如何处理数百万个文件
在某些集群中,我需要进入某个目录并列出并选择一些文件。问题是甚至可能有数百万个非常小的文件。如果我这样做,
ls -l
效率非常低。但是,如果我尝试一种应该是更好的选择,比如
find . -name "*.mol2" | xargs ls
“需要几分钟”,但我没有得到任何答案……
我想知道对于这种情况是否有更好/更快的方法。当然,我可以告诉生成所有这些文件的人一些事情,但这超出了问题的范围。谢谢
In some cluster I need to enter in some directory and list and select some files. The problem is that probably there are even millions of very small files. If I do
ls -l
It is very inefficient. But if I try a supposed to be better alternative like
find . -name "*.mol2" | xargs ls
It takes minutes and I do not get any answer ...
I wonder if there are better/faster methods for situations like this one. Of course I could tell the person who generated all these files something, but this is out of the scope of the question. Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
显而易见的是:
但是对于数百万个文件,这仍然需要时间 - 至少第一次是这样。第二次该目录将有望被缓存。
对于外部范围:创建可能命名为子字符串的子目录,因此 foobarbaz123.mpl2 将进入 foo/bar/baz/foobarbaz123.mpl2
The obvious would be:
But with millions of files it will still take time - at least the first time. The second time the dir will hopefully be cached.
For the outside scope: Create subdirs maybe named as substrings, so foobarbaz123.mpl2 will go into foo/bar/baz/foobarbaz123.mpl2
ls -al *.mol2 .*mol2
怎么样?How about
ls -al *.mol2 .*mol2
?