【发布时间】:2014-07-15 21:13:37
【问题描述】:
我得到了一个包含子目录和大约 300000 个不同类型的文本文件的目录。所有这些都与某个生产项目相关,因此无法更改其架构。
有些任务需要在出现的任何地方替换特定的字符串。每次这样的替换使用grep 和sed 大约需要5 分钟。使用find 和sed 需要更多时间...
但是,PhpStorm 在打开此目录时需要一些时间来索引所有文件,但之后使用 PhpStorm 搜索和替换所有文件的速度非常快!
是否有可能在终端模拟器中实现类似的行为?以某种方式索引给定目录中的所有文件以便快速搜索和替换?
尝试谷歌搜索,我发现了一些工具,如cscope、idutils、seascope,但据我所知,存在严重的限制,例如仅搜索而没有明显的替换方法,或仅索引源文件对于函数、关键字等...
我正在寻找一种方法来索引所有文件以快速搜索并替换为自动更新的索引。与 PhpStorm 类似,但终端方式和开源。
谢谢!
【问题讨论】:
-
如果您可以并行调用 sed -i ... 操作 (10-50) 会如何,这将同时处理不同的文件集。您可能会更快地更换字符串。即在
find /main/location -maxdepth 0做目录;回显我的目录是 $dir; some_file_replace.sh $dir &;睡眠 500; done .. now ... 您可以将以下代码放入 some_file_replace.sh 作为 .... for files in `find $1 -type f;回显这是 $1 中的文件 $file; sed -i "s/xxx/yyy/g' $file; 完成 -
我想我明白你所说的,但我怀疑它会提高性能,因此整个负担在 IO 上,而不是在 CPU 上。至少在我的情况下。因此,如果我有 SSD 肯定会有所改进,但我没有,无论如何我想要一些开源索引解决方案。