【发布时间】:2012-04-11 17:34:50
【问题描述】:
我有一个简单的查找命令,它需要遍历服务器上的数百万个文件并找到一些具有给定后缀的文件。随着时间的推移,这些文件被频繁地写入和删除。我只是想知道是否有一种方法可以更快地找到。使用 locate 是没有问题的,因为为 locate 制作数据库将非常昂贵。
find /myDirWithThausandsofDirectories/ -name *.suffix
在某些服务器上,此命令需要几天时间!
有什么想法吗?
谢谢,
【问题讨论】:
-
这就是你所能做的。 find 将为您迭代目录,但是由于目录条目的存储方式,遍历 unix 系统上的“大”目录自然会很慢。
-
解决问题?
find /myDirWith../dira* -name *.suf & find /myDirWith../dirb* -name *.suf ....&另外,看看gnu-parallel或xargs -n祝你好运! -
也许拥有与数百万个文件不同的东西是一个很好的例子,例如GDBM 数据库,或 MySQL 或 PostGresQL 等“关系”数据库,或 mangodb 等 noSQL 数据库。