如何使用命令行在音乐文件夹中的所有曲目编号后递归获取空格 - 空格

如何使用命令行在音乐文件夹中的所有曲目编号后递归获取空格 - 空格

如何使用命令行在音乐文件夹中的所有曲目号后递归地获取空白破折号空白?

答案1

您还应该指出文件名当前的显示方式。例如,如果包含文件列表的文件夹如下所示:

$ ls -1v
1Music.mp3
2Music.mp3
3Music.mp3
4Music.mp3
5Music.mp3
6Music.mp3
7Music.mp3
8Music.mp3
9Music.mp3
10Music.mp3

我们可以用:

rename "s/(^[0-9]+)/\$1\ \-\ /" *.mp3

要得到:

'1 - Music.mp3'
'2 - Music.mp3'
'3 - Music.mp3'
'4 - Music.mp3'
'5 - Music.mp3'
'6 - Music.mp3'
'7 - Music.mp3'
'8 - Music.mp3'
'9 - Music.mp3'
'10 - Music.mp3'

为了安全起见,请先使用该-n选项测试您的命令:

rename -n "s/(^[0-9]+)/\$1\ \-\ /" *.mp3

此命令将显示如何重命名文件,而无需实际重命名它们。

答案2

您可以使用正则表达式搜索这样的文件名模式。

find . -regex '.*\s\-\s.*'
  • 使用find默认情况下,该命令会进行递归搜索。.第一个参数表示要搜索的路径,如果您不想在当前工作目录中搜索,则可以将其替换为任意路径。
  • \s在正则表达式中,空格用 表示。
  • 我假设你的意思是连字符(可以在键盘上找到)通过术语短跑。但是,连字符在正则表达式中具有特殊含义,必须逃脱使用\-。如果你想包含其他破折号类型,你应该使用字符集在您的正则表达式中,例如[\-–—]
  • 以开始和结束正则表达式.*允许在我们关注的模式之前和之后使用任何字符(包括无字符)。

相关内容