使用正则表达式更改文件扩展名的Bash脚本

时间:2014-07-27 08:15:47

标签: regex bash shell

我有很多文件已经从我的iphone文件系统中复制过来,首先是他们是mp3文件,但iphone上的应用程序将其名称更改为一些随机的工作人员,如下所示:

1c03e04cc1bbfcb0c1237f57f1d0ae2e.mp3?额外= f7NhT68pNkmEbGA_I1WbVShXQ2E2gJAGBKSEyh3hf0hsbLB1cqnXDuepYA5ubcFm_B3KSsrXDuKVtWVAUh_MAPeFiEHXVdg

我只需要在mp3之后删除部分文件名。请给我一个脚本 - 有超过600个文件,并且手动它是不可能的。

2 个答案:

答案 0 :(得分:2)

您可以使用重命名命令:

rename "s/mp3\?.*/mp3/" *.mp3*

答案 1 :(得分:1)

#!/bin/bash
shopt -s nullglob
for F in *.mp3\?*; do
    echo mv -v -- "$F" "${F%%.mp3\?*}.mp3"
done

将其保存到script.sh之类的脚本,然后在文件所在的目录中以bash /path/to/script.sh运行。

如果发现错误,请删除echo