正则表达式添加文件扩展名

时间:2014-08-27 22:57:01

标签: regex bash

我正在寻找正则表达式来查找没有扩展名的文件夹(及其子文件夹)中的所有文件,并将扩展名.mp3仅添加到这些文件中(即已经具有扩展名的文件应该没有额外的一个)?

例如:

测试进入test.mp3

test1.mp3保持原样

我遇到的另一个问题是我的一些文件名有空格。

到目前为止,我在第一部分使用以下表达式(maxdepth指定了我想要的文件夹结构的深度):

find . -maxdepth 1 ! -name "*.*" -o -name ".*[^.]*" 

我无法弄清楚如何添加.mp3扩展名。

2 个答案:

答案 0 :(得分:1)

以下find命令会递归重命名(将.mp3添加为这些文件的扩展名)没有任何扩展名的文件。

find . ! -name *.* -type f -exec mv {} {}.mp3 \;

答案 1 :(得分:0)

只要存在-nono参数,以下命令就不会修改任何文件:

rename -v -nono 's{.+(\.mp3)?\Z}{.mp3}i' *

rename(1)实用程序由rename上的“Debian”包提供。