假设我想在git存储库中包含的源代码中重命名一个方法.我可以手工完成,但方法名称可能在多个地方(例如,单元测试、文档、实际方法).为了判断方法的使用位置,我使用了"git grep".我让"git grep"只显示我想更改的行,然后我没有自动更改这些行的工作流.

我正在寻找一种自动化的方法(希望使用git工具)来完成这最后一步.我希望有某种"git-sed"或类似的东西,但我找不到.

我认为这个界面会很好:git-sed's/old-method-name/new-method-name/g'

推荐答案

你可以做一个

for i in $(git grep --full-name -l old_method_name)
do
 perl -p -i -e 's/old_method_name/new_method_name/g' $i
done

将其粘贴到某个文件中,然后在配置中将其别名为git sed.

Update:下面tchrist的 comments 是一个更好的解决方案,因为它可以防止perl重复生成.

Linux相关问答推荐

C++17:G++8.5版似乎无法正确生成无符号64位伪随机整数

仅使用Find搜索32字符长的目录

X86_64程序集中的分段故障:系统调用问题

Shell 脚本程序 - 从日志(log)文件中过滤磁盘空间利用率超过 80% 的行

记录终端输入和输出的 Bash 脚本

线程创建会在 Linux 中触发页面错误吗?它与软脏 PTE 有什么关系?

用于替换 struct 文档中文本的 Bash 脚本

更改 awk 中的上一个重复行

使用 sed 从文本文件中删除特定字符串

如何在ubuntu中通过.sh文件启动多个服务

问题:Virtio rpmsg 总线 virtio0:收到的 msg 没有收件人 - 在 Yocto Hardknott - imx7d-pico

如何在文本文件中向左移动特定单元格

使用 gdb 将地址转换为行

为什么我不能将 Unix Nohup 与 Bash For 循环一起使用?

如何使用完整路径或文件名显示 grep 结果

如何构建在 Android 上运行的本机(命令行)可执行文件?

如何使用 AWK 合并两个文件?

用于将文件夹从本地计算机复制到远程服务器的 scp 命令语法

如何在 shell 脚本中向文件中添加一行?

Linux下Eclipse在哪里找eclipse.ini