centos系统自定义prename

#此方法适用于系统没有安装prename的时候

#centos8.4自定义prename成功,将如下的prename设置在/usr/local/bin目录下

sudo tee /usr/local/bin/prename << 'EOF'
#!/usr/bin/perl
use strict;
use warnings;

# 检查参数数量
if (@ARGV < 2) {
    die "Usage: prename 's/pattern/replacement/' file(s)\n";
}

my $expr = shift;
my $count = 0;

# 确认文件存在
@ARGV = grep {-e $_ or print "Warning: $_ does not exist\n"} @ARGV;

foreach my $file (@ARGV) {
    my $oldname = $file;
    my $newname = $file;
    
    # 应用替换模式
    eval "\$newname =~ $expr";
    if ($@) {
        warn "Error in pattern: $@\n";
        next;
    }
    
    # 如果文件名已经更改
    if ($oldname ne $newname) {
        if (rename($oldname, $newname)) {
            print "Renamed: $oldname -> $newname\n";
            $count++;
        } else {
            warn "Failed to rename $oldname to $newname: $!\n";
        }
    } else {
        print "No change needed for: $oldname\n";
    }
}

print "Total files renamed: $count\n";
EOF

sudo chmod +x /usr/local/bin/prename

#改变属性

sudo chown train:train prename

#可以愉快的在用户或者root下使用prename了(支持perl正则)