重命名图像目录数字

重命名图像目录数字

我正在尝试重命名一个充满图像的目录,如下所示:

test.jpg
搞笑.gif
悲伤.png
文件名.PNG
文件naaskjas.JPG

到:

1.jpg
2.gif
3.png
4.png
5.jpg

除了大写 --> 小写转换之外,我已经让它工作了:

i=1;
shopt -s nullglob;
for f in *.jpg *.gif *.png *.jpeg *.JPG *.JPEG *.GIF; do
    mv -- "$f" "$i.${f##*.}";
    ((i++));
done

我也想jpeg成为jpg

答案1

尝试类似的东西

ext=$( echo "$i.${f##*.}" | tr [AZ] [az] )
mv --“$f”$i$ext

或固定长度的文件名。

dest=$(printf '08d%' $9)$( echo "$i.${f##*.}" | tr [AZ] [az] )
mv --“$f”$dest

C

答案2

您可以使用${parameter/pattern/string}搜索/替换以及${parameter,,pattern}转换为小写。

i=1;
shopt -s nullglob;
for f in *.jpg *.gif *.png *.jpeg *.JPG *.JPEG *.GIF; do
    EXT="${f##*.}"
    EXT=${EXT,,}
    EXT=${EXT/jpeg/jpg}
    mv -- "$f" "$i.${EXT}";
    ((i++));
done

答案3

两步:

转换扩展名:

for file in *.GIF; do mv $file ${file%GIF}gif; done
for file in *.jpeg; do mv $file ${file%jpeg}jpg; done
...

文件数量:

for file in *.gif *.jpg ...; do mv $file $i$file; ((i++)); done

答案4

如果你有(p)rename,你可以这样写:

shopt -s nullglob;

i=1; 
for f in *.{jpg,JPG,jpeg,JPEG,png,PNG,gif,GIF}; do 
    rename 's/.*\.(.*)$/'$((i++))'.\L$1/; s/jpeg$/jpg/' "$f"; 
done

相关内容