如何使用重命名命令来修复这些文件名?

如何使用重命名命令来修复这些文件名?

我正在尝试更改看起来像的文件

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.mp301- Track name.mp3.

答案4

有两(三)个擦除命令:一个是实用程序Linux每个非嵌入式 Linux 系统上都安装了一个软件包,其中一个(实际上是两个变体)基于 Perl。看所有重命名的含义是什么:预命名、重命名、文件重命名?

util-linux 命令非常基本,但在极少数情况下它可以执行您想要的操作。将第一个空格替换为空格-破折号-空格:

rename ' ' ' - ' [0-9][0-9]\ [^-]*

相关内容