Regex 重命名文本文件
我在一个目录中有多个不同名称的文本文件。我想在所有文本文件中搜索字符串,如果在任何文本文件中找到该字符串,我想将该文本文件重命名为ABC.txtRegex 重命名文本文件,regex,perl,Regex,Perl,我在一个目录中有多个不同名称的文本文件。我想在所有文本文件中搜索字符串,如果在任何文本文件中找到该字符串,我想将该文本文件重命名为ABC.txt 有人能帮我完成这个perl脚本吗。这应该能满足您的需要 你应该花点时间弄清楚这是怎么回事 “我想将该文本文件重命名为ABC.txt” 希望您知道,同一目录中只能有一个名为ABC.txt的文件。所以我正在制作文件:ABC.txt ABD.txt ABE.txt等等 这是未经测试的顺便说一句 #!/usr/bin/perl use strict; us
有人能帮我完成这个perl脚本吗。这应该能满足您的需要 你应该花点时间弄清楚这是怎么回事 “我想将该文本文件重命名为ABC.txt” 希望您知道,同一目录中只能有一个名为
ABC.txt
的文件。所以我正在制作文件:ABC.txt ABD.txt ABE.txt
等等
这是未经测试的顺便说一句
#!/usr/bin/perl
use strict;
use warnings;
use autodie;
use File::Copy;
my $dir = "test-dir";
opendir(my $dh, $dir);
chdir $dir;
my @files = grep { !-d $_ } readdir $dh;
closedir $dh;
my $new = "ABC";
for my $file (@files) {
open my $fh, "<", $file;
while(my $line = <$fh>) {
chomp $line;
if($line =~ /something/) {
move($file, "$new.txt");
$new++;
last;
}
}
close $fh;
}
#/usr/bin/perl
严格使用;
使用警告;
使用自动模具;
使用文件::复制;
my$dir=“test dir”;
opendir(my$dh,$dir);
chdir$dir;
my@files=grep{!-d${readdir$dh;
约$dh;
我的$new=“ABC”;
对于我的$file(@files){
打开我的$fh,"你自己也尝试过吗?展示你的尝试通常是一个好主意…看看。如果多个文件包含字符串,如果你不小心,你将丢失除最后一个文件之外的所有文件,因为你在任何时候都只能在给定目录中有一个名为ABC.txt
的文件。你可以负担last
在$new++;
之后,在找到文本后停止读取文件。@JonathanLeffler错过了,谢谢。