【发布时间】:2011-12-01 03:07:48
【问题描述】:
我有一些文件的名称如下:
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?干杯!!
【问题讨论】: