我有很多.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
的情况下做到这一点。