从命令行查找和替换多个文档中的文本

使用终端批量查找和替换多个文件

与命令行中的许多内容一样,没有确认过程,因此您需要在启动命令之前确保语法设置正确,否则您可能需要执行另一次查找和替换来修复错字。

基本命令语法如下:

perl -pi -w -e 's/THIS/THAT/g' /path/to/files*.txt

对于单词示例,如果您需要将“文档”文件夹中每个 .txt 文件中的所有“食人魔”实例替换为“玉米面包”,那么您将使用以下命令:

perl -pi -w -e 's/ogre/cornbread/g' ~/Documents/*.txt

对于查找和替换整个短语的示例,假设我们要在一组 .txt 中将整个句子“The Chocolate Factory”替换为“The Wizard of Oz” Documents 目录中存储的以“Films”开头的文件:

perl -pi -w -e 's/巧克力工厂/绿野仙踪/g' ~/Documents/Films*.txt

查找和替换立即完成。您可以使用 cat 和 grep 来检查更改:

cat ~/Documents/Films124.txt |grep “绿野仙踪”

不可否认,这是相当先进的,是的,可以通过 TextWrangler 和 BBEdit 等 GUI 应用程序以更加用户友好的方式通过多个文档批量查找和替换,但有时命令行对于像这样的快速任务来说更快和其他类似,而且它不需要任何额外的下载使用。

大赞 Lifehacker 出色的技巧。

更新:“sed”命令是另一种通过命令行进行快速查找和替换的方法。涵盖 sed 主要是另一篇文章的主题,但是使用 sed 完成此任务的基本语法更简单一些,因此更容易记住:

sed -i 's/THIS/THAT/g' /path/to/files*.txt

没有正确或错误的方法,所以使用 perl 还是 sed 取决于个人喜好。