sli*_*lel 0 linux find-and-replace recursive
我有一个包含多个子目录的目录,这些子目录都包含文本文件。在这些文本文件中,有一个词反复出现,我想替换每个实例。
我的问题 - 我将如何从 linux 命令行完成此操作?我不想对每个文件进行 gedit 并进行手动搜索/替换。
(作为奖励 - 有没有办法以不区分大小写的方式做到这一点?)
您可以使用find
和perl
(通过xargs
):
find /target/directory -type f | xargs perl -pi -e 's/stringtoreplace/replacement/g'
Run Code Online (Sandbox Code Playgroud)
或者如果您已经在正确的目录中
find . -type f | xargs perl -pi -e 's/stringtoreplace/replacement/g'
Run Code Online (Sandbox Code Playgroud)
如果您只想替换 html 文件:
find . -type f -name '*html' | xargs perl -pi -e 's/stringtoreplace/replacement/g'
Run Code Online (Sandbox Code Playgroud)
你当然不必使用 perl,任何执行搜索和替换操作的工具都可以,而且毫无疑问,有几个可用的资源比启动 perl 更少(在这种情况下是一个大锤来破解一个坚果,但这是我已经存储多年的一个例子,我没有理由找到更有效的版本)。我的“技巧”的原始来源是http://oreilly.com/pub/h/73
您可以使用您选择的任何工具中的所有选项,因此在这种情况下,可以发挥 Perl 正则表达式的全部功能。上面链接的页面有更多示例,包括如何以不区分大小写的方式进行搜索。
归档时间: |
|
查看次数: |
4296 次 |
最近记录: |