我正在開發一個庫,並對其進行了重大更改。我的所有項目都導入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