我正在寻找一种比 grep 更快的工具,也许是多线程 grep 或类似的东西......我一直在寻找一堆索引器,但我并没有因为我需要一个索引而出售......
我有大约 1 亿个文本文件,我需要对精确的字符串匹配进行 grep,在找到字符串匹配时,我需要找到匹配的文件名。
ie: grep -r 'exact match' > filepaths.log
Run Code Online (Sandbox Code Playgroud)
它大约有 4TB 的数据,我在 6 天前开始了我的第一次搜索,grep 仍在运行。我还有十几个搜索要进行,我等不及 2 个月才能检索所有这些文件名 =]
我已经审查了以下内容,但是,我认为我不需要这些索引器附带的所有花里胡哨,我只需要匹配发生的文件名......
在花了几个小时阅读所有这些引擎之后,我的头在旋转,我希望我只有一个多线程 grep 哈哈,非常感谢任何想法和/或建议!
PS:我运行的是 CentOS 6.5
编辑:搜索多线程 grep 会返回几个项目,我的问题是,多线程 grep 是我正在做的事情的最佳选择吗?
EDIT2:经过一些调整后,这就是我想出的,它比常规的 grep 运行得快得多,但我仍然希望它更快……我正在看着我的磁盘 io 等待,它尚未建立,我可能会做更多的调整,并且仍然对任何建议感兴趣 =]
find . -type f -print0 | xargs -0 -n10 -P4 grep -m 1 -H -l 'search string'
Run Code Online (Sandbox Code Playgroud) 无论如何,或者是否有任何软件可以让我为每个桌面拥有不同的扩展坞...
意思是,我只想看到该桌面上为该停靠栏打开的窗口...
任何信息都非常感谢
这是交易,我正在为我的爬虫检查域名,我有 1.45 亿个域名要即时进行欺骗检查。
存储消耗:
80GB for 19 million files
Run Code Online (Sandbox Code Playgroud)
为此,我从域的前四个字母创建一个目录结构,然后创建一个单字节文件,表示我以前见过这个域。
s/u/p/e/superuser.com
Run Code Online (Sandbox Code Playgroud)
我创建了像上面这样的目录结构,以防止任何目录中包含不合理数量的文件......
域/文件位置详细信息:
Domain: superuser.com
Root Directory: /home/tmc/tech/Data/Dupes/Domains/
Directory: s/u/p/e/
File Path: s/u/p/e/superuser.com
File Contents: .
Run Code Online (Sandbox Code Playgroud)
现在,我强烈怀疑存储使用在某种程度上与创建的目录和文件的数量有关,但是,仅创建目录不会导致极端的存储使用,因此它与填充这些目录有关,再次,我试图弄清楚这一点,这就是我此时怀疑的。
有人可以向我解释 linux ext4 文件系统如何在与目录、文件和带有文件的填充目录相关的存储消耗方面工作吗?
desktop ×1
dock ×1
ext4 ×1
file-search ×1
filesystems ×1
grep ×1
linux ×1
macos ×1
search ×1
ssd ×1