我已经习惯使用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
答复已更新。 –