在 EOF 之前的任何地方都找不到字符串终止符"'"



我有很多.txt文件,我想在第一行添加它的名称。

我有这样的命令:

perl -i -pe 'BEGIN{undef $/;} s/^/$ARGVn/' `find . -name '*.txt'`

这在Linux中非常有效,但在Windows中,我得到了:

找不到字符串终止符"'"在-e行1的EOF之前的任何位置。

我认为以下脚本可以工作:

#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
sub wanted {
if (m/.txtz/) {
system "perl", "-i.bak", "-0777", "-pe", 's/^/$ARGVn/', $File::Find::name;
}
}
find(&wanted, ".");

此脚本使用问题评论中建议的File::Find。find使用回调和要搜索的目录列表。名为wanted的回调检查文件名是否以"结尾;。txt";。如果是这样,脚本将生成一个新的perl解释器,在第一行之前插入文件名,对文件进行就地编辑。

可能有一种方法可以在不使用system的情况下做到这一点。

最新更新