正则表达式重新排列文件名字符串?

时间:2011-11-29 18:19:25

标签: regex rename

我需要重命名大约50,000个文件,但无法找到有效的正则表达式示例。这是所有文件名的模式

myfiletitle.jpg_download=12500

文件名末尾的数字ID都是相同的长度 - 5位数 - 所有文件名都遵循这种模式。在Bash shell中,我想运行批量重命名来重构文件名,如下所示:

12500_myfiletitle.jpg

这应该很容易,但我无法让正则表达式工作。我在以下方面取得了一些成功,但总的来说我无法获得完整的解决方案:

s/\(.*\).../\1/

提前致谢!!

2 个答案:

答案 0 :(得分:3)

s/\(.*)\.jpg_download=\([0-9]\{5\}\)$/\2_\1.jpg/

这是使用sed - 就像正则表达式一样,正如问题的说明性正则表达式中暗示的那样。在Perl中,你会写:

s/(.*)\.jpg_download=(\d{5})$/$2_$1.jpg/

答案 1 :(得分:0)

如果要保留的两个部分始终用'_download ='分隔,则:

sed 's/\(.*\)_download=\(.*\)/\2_\1/'