linux 快速查找数百万个文件中的文件

deyfvvtc  于 2023-04-29  发布在  Linux
关注(0)|答案(3)|浏览(210)

我有大量的数据,大约50*50*10000文件,总文件大小为3TB。文件结构如下所示:
/myhdd/Experiment_{id}/Run_{id}/Filename
现在给定一个文件名,我想定位它的位置;然而,直接的find /myhdd -name "filename"是非常低效的。它需要查找整个硬盘才能找到一个文件。有没有更好的方法来做到这一点,比如以某种方式构建文件结构的索引来加速find

yzckvree

yzckvree1#

也许你可以使用locate命令,它通常比find快:
locate -b filename

dsekswqp

dsekswqp2#

如果locate或各种find调用对于您的情况来说仍然很慢,您可以创建并使用路径搜索文件,正如已经注解的那样。
您可以使用以下命令创建该“索引”文件

find . -type f > myindex

您可以使用-ctime定期更新它以追加新文件,或者从一开始就更新它,它只是您现在搜索的时间成本。
然后你可以找到路径搜索任何文件名。这可能已经足够快了:

fname="myfilename"; awk -F/ -v f="$fname" '$NF==f' myindex

Here与您的问题有关的更多信息。

yizd12fk

yizd12fk3#

我经历过类似的情况,完全可以理解你的痛苦。帮助我的是fzffd工具。我也同意创建一个本地 IndexedDB 的其他答案,它可以作为一个cron作业。你可以编一个SHELL别名来搜索 IndexedDB 。我会让你自己决定最好的选择。..请回复我们这些方法的有效性:)。
选项:

  • fzf
  • fd
  • 创建 IndexedDB (定期更新)和 IndexedDB 中的搜索功能的Cron作业。

你可以从这里了解更多关于fzffd的信息:

相关问题