在Linux上的图形化工具-批量替换多个文件

24

它需要是图形化的。不使用sed、awk、grep、perl或其他工具。我知道如何使用它们,并且现在正在使用它们,但我需要在300多个文件中挑选每个替换。

我想要一个工具,可以:

  • 输入搜索字符串
  • 输入替换字符串
  • 选择目录和文件扩展名

然后它会递归进入该目录及其子目录中的每个文件,打开并滚动到搜索字符串所在的位置,并提供两个选项:

  • 替换(并查找下一个)
  • 查找下一个

仅此而已。正则表达式支持是优点,但不是必需的。

已解决:Regexxer正是我所需要的。如果有人需要在Slackware上使用它,这里是您需要下载和编译它的方法(选择每个依赖项的正确版本可能很痛苦)。


最新的0.10源代码版本于2011年发布,每周下载量为8次:https://regexxer.sourceforge.net/ https://sourceforge.net/projects/regexxer/。此外,该软件还可在基于Ubuntu的Linux发行版中作为可安装的软件包使用。 - undefined
6个回答

30

我认为Regexxer正是你所需要的:

Regexxer

regexxer是一个非常棒的GUI搜索/替换工具,支持类似Perl的正则表达式。如果你需要在整个项目中进行替换,并且已经对拼凑sed命令行感到厌倦了,那么你一定要试试它。

另外请参考截图,它看起来很像你描述的样子:

screenshot


4
我想将此投票否决,但是没有足够的积分来执行该操作。regexxer 没有多行搜索字段,因此只能搜索和替换单行文本。jedit 工具可以处理多行文本的搜索和替换,因此是更好的解决方案。 - Farrukh Najmi
1
请同意Farrukh的观点,查看他的答案并点赞:https://dev59.com/4nVC5IYBdhLWcg3wxEJ1#189356 - a coder
JEdit更加用户友好。 - Nicholas DiPiazza
警告,因为Regexxer已经相当过时了,无法安装。我猜2022年的新发行版不适用于它。 - sangorys

8

Emacs + dired + query-replace-regexp

使用 Emacs + dired + query-replace-regexp 进行查找和替换。

要获取完整的步骤,请点击此链接(该链接非常长,涵盖了所有可能的替代方案)。


1
我在Emacs中使用过这个,真的很棒。它完全符合原帖作者的需求。 - EfForEffort
1
虽然我更喜欢Regexxer,但我会投票支持你,因为这是一个有效的解决方案。谢谢。 - Milan Babuškov

6

jEdit可以完全满足您的需求。它是用Java编写的,在Linux、Windows和OS X上运行良好(可能也适用于其他操作系统)。


有趣。我3-4年前使用过jEdit,但不记得那个功能。它是通过某个插件可用吗?或者可能是在此期间添加的... - Milan Babuškov
我不知道它存在多久了,但文本搜索对话框允许搜索正则表达式匹配,并且您可以搜索所有打开的文件或整个目录(如果需要)。 - Neall
奇怪的是,Linux 版本的 jedit(4.2final 版本)在搜索和替换窗口中没有多行文本区域。 - Barth
1
jedit解决方案是我发现的唯一一个可以处理跨多个文件的多行搜索和替换的工具。在我的经验中,regexxer工具无法处理多行。在Ubuntu Linux上,jedit确实有一个多行文本区域,可以使用“搜索/在目录中搜索”菜单操作。这个回答应该得到最高分,但由于某些原因没有得到,而得到最高分的回答(regexxer)不支持多行搜索。 - Farrukh Najmi
jedit很用户友好。其他工具似乎并没有比bash更高级,那有什么意义呢? - Nicholas DiPiazza

4

最近的Kate(如果你使用KDE桌面环境)可以实现这个功能,但方法比较棘手。进入“编辑>在文件中查找”菜单,并选择包含要操作文件的文件夹。

诀窍是只有在搜索结果出现后,你才会发现一个文本框和一个名为“替换已选项”的按钮。点击该按钮即可完成你想要的操作。


只有在激活Kate的搜索和替换插件时才能使用此功能。 - Fabian Rost

3

我总是使用gVim来完成这个任务。我打开所有文件,然后使用命令在每个文件中执行替换操作,并请求确认。通常情况下,我只使用不到20个文件,因此可以将它们作为选项卡打开并使用以下命令:

:tabdo %s/foo/bar/gc

gVim在Windows上很好用 :) 我的同事们经常使用Textpad来完成相同的工作,但我认为gVim更加高效。


2
bufdo在缓冲区上工作,而不是选项卡,这非常有用。有没有办法让它在处理缓冲区时自动保存文件? - Neil G
1
我不确定是否可以边进行保存,但是当完成后你可以使用“:wa”一次性保存所有内容。我认为你也可以使用“:tabdo :w”,但我觉得这样做没有意义。当然,你也可以使用缓冲区 :)。 - rmeador

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接