使用NotePad ++用文件名替换文本?

时间:2014-07-30 19:08:10

标签: regex perl shell ssh notepad++

我有几百个文件需要批量替换文本。

我知道在NotePad ++中我可以使用"在文件中查找"并批量替换所有文件中的文本。我需要使用该特定文件的名称替换每个文件中的YYYYYYYYY

有没有办法使用扩展或正则表达式搜索模式?

另外,我有快捷键CTRL + D设置,以便在有帮助的情况下自动复制文件名...

对此的任何帮助将不胜感激。我也愿意通过shell来做这件事,如果这更容易......

1 个答案:

答案 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

在Windows上间接实现此目的
perl -i.bak -pe "BEGIN {@ARGV = glob('*.py')} s/Y{9}/$ARGV/g"