正则表达式:删除文件名中X和Y之间的所有内容

时间:2014-09-02 13:24:16

标签: regex

我有很多文件的开头是xxx-yy。 xxx和yy都可能有所不同。例如:

356-01 Nielsen - Sovnen,Op。 18.mp3

" 356-01"之间的一切和" .mp3"必须删除,因此新文件名为:

356-01.mp3

" .MP3"也各不相同。表达式应涵盖" .flac"还

2 个答案:

答案 0 :(得分:1)

假设xxx和yy是数字,你可以

s/(\d\d\d-\d\d).*(\..+$)/\1\2/

最后的\.是一个文字句点,而.+$表示每个字符一直到最后,所以它应该得到扩展名,因为它之前的.*是贪婪的。

在斜杠和使用捕获组之间写入查找和替换。

答案 1 :(得分:0)

我的问题是基于我认为提前做了一些。现在证明它不起作用,因此我必须重新制定任务。对不起。

我有很多以01,02,03等开头的文件。它永远不会发出99.例如:

01 Nielsen - Sovnen,Op。 18.mp3

必须在新文件名的开头添加一个3位数*,以及" 01"之间的所有内容。和" .mp3"必须删除,因此新文件名为:

356-01.mp3

" .MP3"也各不相同。表达式应涵盖" .flac"还

*)您在回复中使用的3位数字并不重要,因为该命令将作为一行添加为我在每次使用前手动编辑的较大bash脚本中的一行