我已經習慣使用Vim中的表達式來替換大文件,並想知道通過什麼實用程序學習,這將允許我以類似的方式在文件夾中執行這樣的事情。 什麼命令行程序的搜索和替換是最像vims和跨文件夾?將文本替換爲多個文件
2
A
回答
5
sed -i.bak 's/foo/bar/g' *
將取代每foo
與bar
上在代替當前目錄下的每個文件的每一行,並創建一個備份文件,.bak
擴展。所以我想看看sed
。但是... Vim很有能力:
vim -c "bufdo!%s/foo/bar/g" -c "wqa" *
幾乎是一樣的。 bufdo!
執行以下命令(%s/foo/bar/g
在這種情況下=>在每行上將foo
替換爲bar
(%
是每行的特殊行地址))。 wqa
表示:寫入全部然後退出。您最多可以指定10個到Vim的交換機,這些交換機將按照指定的順序執行。所以,基本上這是Vim的自動化:
- 都開在當前目錄下的文件=>每個文件都有自己的緩衝區
- 執行代替每個緩衝
- 然後寫入文件,並退出
唯一的區別是缺少備份文件創建(可通過一些.vimrc
設置輕鬆實現)。但sed
更快。
2
大概你應該用vim
不是外部命令行程序。請參閱:help :find
或:help :grep
例如,如果要跨文件夾grep單詞,請通過**/*.txt
。
2
你可以通過例如結合Perl和慶典 做到這一點:
find . -type f -name "*.cpp" -print | xargs perl -i -pe 's/pattern/replace/g'
這會發現所有「的.cpp」的文件開始在「」並將它們中的每一個(路徑)傳遞給perl命令
+0
感謝您的查找提示。使用.css腳本這樣的優秀工具,我幾乎覺得髒了;) – Prospero
相關問題
- 1. 將文件替換爲多個文件夾/子目錄
- 2. 用多個文本框替換文本
- 3. C# - 替換多個文本
- 4. 將文本替換爲Jquery
- 5. 在Matlab中將多個文本文件轉換爲Mat文件
- 6. 將版本化文件替換爲非版本化文件
- 7. 在多張文件替換文本
- 8. 用Sqlite替換很多文本文件
- 9. 查找並替換文件夾中的多個文本文件
- 10. 將多個文本文件轉換爲單個輸出(Matlab)
- 11. 用一個文本文件替換兩個或多個空格;
- 12. 批處理腳本替換多個文件中的文本
- 13. 用於多個腳本/配置文件的文本替換
- 14. 如何將preg_match的多個實例替換爲不同的替換文本?
- 15. (Bash)如何將許多文件替換爲腳本?
- 16. 替換多個文件中的文本但保留原文
- 17. 將.txt文件中的文本替換爲另一個.txt文件
- 18. 將一個文件的值替換爲另一個文件
- 19. 在單個文件中替換多個文本值
- 20. 如何將文本文件分割爲多個文本文件
- 21. 將文本文件分解爲多個文本文件
- 22. PHP DOM文檔將DIV替換爲文本,將DIV替換爲DIV
- 23. R,將多個文本文件名轉換爲列名
- 24. bash替換文件中的多行文本,模式爲
- 25. PHP腳本將大文本文件分割爲多個文件
- 26. 將一個文本文件轉換爲一個sql文件
- 27. 查找並替換多個文件中的文本
- 28. 搜索多個php文件,並替換文本?
- 29. 在文本文件中替換多個單詞
- 30. 替換多個文件擴展中的文本
您能詳細說明'bufdi!%s'和'wqa'在這裏做什麼嗎? – Prospero
答覆已更新。 –