我正在开发一个库,并对其进行了重大更改。我的所有项目都导入github.com/retep-mathwizard/utils/src/...
,但我已将项目缩短为github.com/retep-mathwizard/utils/...
。我需要从~
开始找到它的每一处,并替换所有的事件。有没有办法做到这一点?在Git repo的所有文件中搜索并替换文本
回答
sed
是你的朋友。
$ sed -i 's_github.com/retep-mathwizard/utils/src_github.com/retep-mathwizard/utils_g' *.txt
哪里*.txt
是要查找/替换任何文本文件。请注意,_
很重要。它用于分隔搜索和替换中的模式,因为您的模式中有标准/
分隔符和经常使用的替代符-
。 -i.bak
选项将告知sed
编辑文件,并保存备份副本,其扩展名为.bak
。
如果这些文件位于许多子目录中,则需要使用组合框,如find
和xargs
。
$ find ~ -name "*.txt" -print0 | xargs -0 sed -i.bak 's_github.com/retep-mathwizard/utils/src_github.com/retep-mathwizard/utils_g'
再次,*.txt
是任何正则表达式会发现只有你想替换文本这些文件
免责声明:与涉及这些工具的话,你应该试试这个东西更换或一个新的git分支。
编辑:删除扩展-i
标志。正如在评论中指出的那样,一切都在源代码控制之下,所以在没有保存备份文件的情况下进行就地编辑应该没问题。
这个命令在你的主目录中的所有文件,减去那些在你.git
文件夹:
find ~ -type d -name '.git' -prune -o -type f -print
为了用别的东西代替的东西所有的情况下,我们可以使用SED:
sed 's|\(github\.com/retep-mathwizard/utils/\)src/|\1|g' filename
这捕获了我们想要保留的部分并在替换中使用它。
结合这些命令要经过所有的文件,使用-i
标志就地编辑(使用-i ''
用于BSD SED/Mac OS)中–我们与-exec sed
更换-print
行动:
find ~ -type d -name '.git' -prune -o -type f \
-exec sed 's|\(github\.com/retep-mathwizard/utils/\)src/|\1|g' {} \;
@ mklement0 Aargh,在测试时我确实在我的最后一个版本中有过,但没有转移它。'-type f'在第一个版本中也是必需的,因为默认行为显然是将整个表达式与'-print'进行和运算。 –
事实上(来自[POSIX规范](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html)):“如果给定的表达式不包含任何初始'-exec', -ok'或'-print',给定的表达式应该被'(given_expression)-print'“(在')'和'-print'之间隐含'-a [nd]'替换。这意味着你最后不需要'-print'。 – mklement0
@ mklement0如果没有'-print',它会列出没有名为'.git'的目录。 –
- 1. 搜索并替换Java中的所有搜索文本TextArea
- 2. 用本地机器上的文件替换git repo中的所有文件
- 3. 读取文件,搜索文本并替换所有行
- 4. 搜索并替换文本
- 5. 搜索并替换包中的所有java文件中的文本
- 6. 搜索并替换linux目录的所有文件中的文本
- 7. 在xib文件中搜索并替换
- 8. 在htm文件中搜索并替换
- 9. autohotkey搜索并替换文本文件中的多个变量
- 10. 搜索并替换Flask中的文本文件
- 11. 用C#搜索并替换文本文件中的值
- 12. 在Python中搜索并替换文本内联文本
- 13. Apache POI Excel - 搜索并替换文本
- 14. 跨列搜索并替换文本
- 15. perl搜索并替换随机文本
- 16. jQuery搜索/替换所有正文文本问题
- 17. 搜索并替换整个文件
- 18. grep搜索并替换大量文件
- 19. 使用.NET c搜索并替换文本文件中的文本和数字#
- 20. MSBuild搜索并替换为xml文件
- 21. 删除Git Repo目录中所有以前版本的文件
- 22. 搜索并替换文件夹shell脚本中的字符串
- 23. 的VBScript替换文本 - 所有文件
- 24. 如何编程文本搜索并替换为PDF文件
- 25. 搜索多个php文件,并替换文本?
- 26. 搜索并替换Excel文档中的文本不起作用?
- 27. 如何搜索文本文件并将其替换为C#?
- 28. 搜索并替换所有元素
- 29. 搜索并替换所有字段(CSV)
- 30. 搜索并替换文件中的现有阵列元素 - PHP
我的文件都是'.go',而不是'.txt'。它会继续工作吗? – XXXX
当然,只需使用'find〜-name'* .go“...'而不是 – bnaecker
因此,无论我在哪个repo中运行此命令,它都会递归地在它内部的repos中查找它以及这些repos中的文件? – XXXX