【发布时间】:2011-08-06 00:27:30
【问题描述】:
我想重命名文件的格式:
img_MM-DD-YY_XX.jpg
img_MM-DD-YY_XXX.jpg
到:
newyears_YYYY-MM-DD_XXX.jpg
地点:
- YYYY = 年
- MM = 月
- DD = 天
- XXX 或 XX = 照片编号
我想出了这个脚本,但它不起作用:
for filename in ?*.jpg; do
newFilename=$(echo $filename | \
sed 's/img_\(.*\)-\(.*\)-\(.*\)_\([0-9][0-9]\)\./newyears_20\3-\1-\2_0\4./;
s/img_\(.*\)-\(.*\)-\(.*\)_\([0-9][0-9][0-9]\)/newyears_20\3-\1-\2_\4/' -)
mv $filename $newFilename
done
任何帮助将不胜感激。
【问题讨论】:
-
运行脚本时会发生什么?
for filename in ?*.jpg; do echo $filename; done返回什么? -
我发现了问题。删除管道“|”之后的反斜杠“\”使其工作。我猜不应该在 bash 脚本中转义换行符。这是正确的吗?
-
反斜杠不是必需的,但不会造成任何麻烦。后面可能有一个空格,或者类似的东西?