Regex 重命名文本文件

Regex 重命名文本文件,regex,perl,Regex,Perl,我在一个目录中有多个不同名称的文本文件。我想在所有文本文件中搜索字符串,如果在任何文本文件中找到该字符串,我想将该文本文件重命名为ABC.txt 有人能帮我完成这个perl脚本吗。这应该能满足您的需要 你应该花点时间弄清楚这是怎么回事 “我想将该文本文件重命名为ABC.txt” 希望您知道,同一目录中只能有一个名为ABC.txt的文件。所以我正在制作文件:ABC.txt ABD.txt ABE.txt等等 这是未经测试的顺便说一句 #!/usr/bin/perl use strict; us

我在一个目录中有多个不同名称的文本文件。我想在所有文本文件中搜索字符串,如果在任何文本文件中找到该字符串,我想将该文本文件重命名为ABC.txt


有人能帮我完成这个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错过了,谢谢。