我有一组文件如下:
Q-30-09-1753.TIF
W-01-04-1753.TIF
W-31-12-1752.TIF
Y-14-12-1752.TIF
使用Windows 上的 git bash我希望重命名文件,将字母放在文件名末尾,如下所示;
30-09-1753-Q.TIF
01-04-1753-W.TIF
31-12-1752-W.TIF
14-12-1752-Y.TIF
我尝试使用以下代码:
for f in *.TIF ; do
mv "$f" "${f//[A-Z]]\-[0-9][0-9]\-[0-9][0-9]\-[0-9][0-9][0-9][0-9]\-[A-Z]/}";
echo "$f"
done
第一部分成功选择要更改的文件,但在重命名它们时,通配符选择是文字。
答案1
我可能会很懒,让我sed
帮我做这件事
newfilename=$(echo "${f}"|sed 's/\(.\)-\([^\.]*\)\.TIF/\2-\1.TIF/')
mv "${f}" "${newfilename}"
而不是学习 bash 可能优秀但单独的字符串替换方法:)
顺便说一句,如果这些是日期,则您的日期格式不利于排序。改为 ISO 日期格式:YYYY-MM-DD 将允许您根据日期正确对文件名进行排序! (否则,您将首先按日期排序,然后按第二个月,最后按年份排序。)
newfilename=$(echo "${f}"|sed 's/\(.\)-\(..\)-\(..\)-\(....\)\.TIF/\4-\3-\2-\1.TIF/')