我有一些文件的名称像这样:
01_dpm_gsi_182.sl5
02_dpm_devel_gsi_182.sl5
03_DPM_DSI_181.sl5
04_globus_httpd_122.sl5
05_globus_httpd_client_cgi_132.sl5
我该如何重命名这些文件,以便得到类似于以下的东西:
01_dpmgsi_s2011e01.sl5
02_dpmdevelgsi_s2011e02.sl5
....
....
我被建议的最接近的翻译是这样的:
最接近我的建议是这样的:
#!/usr/bin/perl -n
if (/^([^_]+)_(.+)_([^.]+)([.].+)$/) {
my $s = $&;
my $x = $1;
my $y = $2;
my $z = 2011;
my $e = $4;
$y =~ s/_//g;
print "mv $s ${x}_${y}_s${z}e$x$e\n"
}
然后像这样使用它:
# ls | perl -n reName.pl > output
# bash ./output
有没有更好的方法或一行代码来完成这个任务,可能使用sed/awk?干杯!