我有几百个文件需要批量替换文本。
我知道在NotePad ++中我可以使用"在文件中查找"并批量替换所有文件中的文本。我需要使用该特定文件的名称替换每个文件中的YYYYYYYYY
。
有没有办法使用扩展或正则表达式搜索模式?
另外,我有快捷键CTRL + D
设置,以便在有帮助的情况下自动复制文件名...
对此的任何帮助将不胜感激。我也愿意通过shell来做这件事,如果这更容易......
答案 0 :(得分:5)
使用perl one-liner
perl -i -pe 's/Y{9}/$ARGV/g' file1 file2 file3
或者使用Windows引用:
perl -i.bak -pe "s/Y{9}/$ARGV/g" file1 file2 file3
切换:
-i
:编辑<>
个文件(如果提供了扩展程序,则进行备份)-p
:为输入文件中的每个“行”创建一个while(<>){...; print}
循环。 -e
:告诉perl
在命令行上执行代码。 <强>代码强>:
s/Y{9}/.../g
:搜索并替换9个连续的Y&#39> $ARGV
:从<>
读取时包含当前文件的名称。如果要将其应用于许多文件而不明确列出它们,可以使用:
perl -i -pe 's/Y{9}/$ARGV/g' *.py
您可以使用glob
:
perl -i.bak -pe "BEGIN {@ARGV = glob('*.py')} s/Y{9}/$ARGV/g"