答案1
可以仅使用bash
.请注意,生成的文件名可能会发生冲突例如,如果您有两个具有相同歌名的文件。因此-i
开关:
for f in *.mp3; do mv -i "$f" "${f#*Posthumus - }"; done
答案2
rename 's/\d\d\s-\s[ .A-Za-z]+-\s//' *.mp3
01 - E.S. Posthumus - Ashielf Pi.mp3 renamed as Ashielf Pi.mp3
02 - E.S. Posthumus - Oraanu Pi.mp3 renamed as Oraanu Pi.mp3
编辑:如果由于某种原因你没有rename
安装可以完成这项工作的版本,你可以轻松地用 Perl 自己编写脚本的最小版本,然后运行它。这是来自Unix常见问题解答,并与我上面提供的正则表达式一起使用:
#!/usr/bin/perl
#
# rename script examples from lwall:
# rename 's/\.orig$//' *.orig
# rename 'y/A-Z/a-z/ unless /^Make/' *
# rename '$_ .= ".bad"' *.f
# rename 'print "$_: "; s/foo/bar/ if <stdin> =~ /^y/i' *
$op = shift;
for (@ARGV) {
$was = $_;
eval $op;
die $@ if $@;
rename($was,$_) unless $was eq $_;
}