我需要重命名大约50,000个文件,但无法找到有效的正则表达式示例。这是所有文件名的模式
myfiletitle.jpg_download=12500
文件名末尾的数字ID都是相同的长度 - 5位数 - 所有文件名都遵循这种模式。在Bash shell中,我想运行批量重命名来重构文件名,如下所示:
12500_myfiletitle.jpg
这应该很容易,但我无法让正则表达式工作。我在以下方面取得了一些成功,但总的来说我无法获得完整的解决方案:
s/\(.*\).../\1/
提前致谢!!
答案 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/'