通过正则表达式重命名文件夹中的所有文件

时间:2016-12-22 09:56:28

标签: linux bash file-rename batch-rename

我有一个包含大量文件的文件夹,其名称具有以下结构:

01.artist_name - song_name.mp3

我想通过所有这些并使用regexp重命名它们:

/^d+\./

所以我只得到:

artist_name - song_name.mp3

我怎样才能在bash中执行此操作?

3 个答案:

答案 0 :(得分:1)

您可以在BASH中执行此操作:

for f in [0-9]*.mp3; do
   mv "$f" "${f#*.}"
done 

答案 1 :(得分:0)

使用Perl rename utility实用程序。它可能安装在您的Linux版本上或易于查找。

rename 's/^\d+\.//' -n *.mp3

使用-n标志,它将是干运行,打印要重命名的内容,而不实际重命名。如果输出看起来不错,请删除-n标志。

答案 2 :(得分:0)

使用' sed' bash命令:

for f in *.mp3; 
do 
    new_name="$(echo $f | sed 's/[^.]*.//')"
    mv $f $new_name
done

...在这种情况下,正则表达式 [^。] 。*匹配字符串第一个句点之前的所有内容。