我正在尝试更改看起来像的文件
01 Track name.mp3
进入
01 - Track name.mp3
到目前为止我徒劳的尝试是
rename '0. ' '$&- ' *.mp3
rename 's/0. /$&- /' *.mp3
rename '/0. /' '/$&- /' *.mp3
rename 's/0.\ /$&-\ /' *.mp3
rename 's/0.\ /$1-\ /' *.mp3
答案1
假设 perlrename
命令:
您已经非常接近最后一个命令了。rename 's/(0.) /$1 - /' *.mp3
会工作。不需要转义空格,它们在正则表达式中没有特殊含义(它们在文件名中有特殊含义,但这在这里并不重要),并且您需要在要重用的部分周围加上括号。
答案2
一定要用命令吗rename
?
$ ls
01 Track name.mp3 02 Track name.mp3 03 Track name.mp3
$ for a in *.mp3
> do
> mv -i "$a" "${a%% *} - ${a#* }"
> done
$ ls
01 - Track name.mp3 02 - Track name.mp3 03 - Track name.mp3
答案3
$ rename 's/^(\d\d)\s*/$1 - /' *.mp3
这将重命名文件名开头有两位数字的所有 MP3 文件,并在数字后面插入空格-破折号-空格。于是01 Track name.mp3
就会变成01 - Track name.mp3
从您自己的尝试来看,所有文件名都以数字零开头,并且您似乎想要插入破折号直接地数字后跟一个空格:
$ rename 's/^(0\d)\s*/$1- /' *.mp3
这将转换01 Track name.mp3
为01- Track name.mp3
.
答案4
有两(三)个擦除命令:一个是实用程序Linux每个非嵌入式 Linux 系统上都安装了一个软件包,其中一个(实际上是两个变体)基于 Perl。看所有重命名的含义是什么:预命名、重命名、文件重命名?
util-linux 命令非常基本,但在极少数情况下它可以执行您想要的操作。将第一个空格替换为空格-破折号-空格:
rename ' ' ' - ' [0-9][0-9]\ [^-]*