使用sed和mv重命名文件

tia*_*gob 8 bash sed mv

我想以以下格式重命名文件:

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
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

anu*_*ava 12

你可以在bash中尝试这个脚本:

for filename in *.jpg; do
  newFilename=$(sed -E 's#img_([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})_(.*)$#newyears_20\3-\2-\1_\4#' <<< "$filename")
  mv "$filename" "$newFilename"
done
Run Code Online (Sandbox Code Playgroud)

sed -E也得到了支持gnu sed.