gpt4 book ai didi

perl - 如何在不触及未更改文件的情况下替换 Perl 中现有文件中的字符串

转载 作者:行者123 更新时间:2023-12-04 11:04:37 26 4
gpt4 key购买 nike

使用

perl -pi -e 's/pattern/replacement/g' $(find src -type f)

很好,除了一件事:所有文件都会被覆盖,即使是那些没有任何匹配的文件。这并不好,因为我经常在 Emacs 或 Eclipse 中打开它们中的许多,然后问我无聊的问题。有没有一种简单的方法可以防止触摸未更改的文件(在 find 中使用 grep 之类的工作量太大,尤其是对于复杂的模式)。

最佳答案

第一件事-i打开文件后是到unlink它,所以这意味着你不能使用 -i在您不想修改的文件上。

find src -type f -exec grep -Pl 'pattern' {} + |
xargs perl -i -pe's/pattern/replacement/g'

当然, grep已经可以执行递归搜索,所以除非你需要使用 find要比您指示的更进一步过滤结果,您可以使用
grep -Plr 'pattern' src |
xargs perl -i -pe's/pattern/replacement/g'

注: cmd | xargs perl ...可以处理比 perl ... $( cmd ) 更多的文件.

关于perl - 如何在不触及未更改文件的情况下替换 Perl 中现有文件中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29397748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com