使用终端中的空格重命名多个文件名

时间:2013-08-21 12:51:25

标签: terminal

我想用以下名称重命名多个文件:

Screenshot at 2013-08-10 19:29:09.jpg

为:

0001.jpg

或者基本上除了原始名称之外的其他任何东西都可以更方便地使用。

我尝试过以下脚本:

a=1
for i in *.jpg; do
  new=$(printf "%04d.jpg" ${a}) #04 pad to length of 4
  mv ${i} ${new}
  let a=a+1
done

来自here

但由于原始文件名中的空格,它会给我以下错误。

mv: target `0021.jpg' is not a directory

如果有人能告诉我完成这项工作的正确方法,我会很感激。 谢谢!

1 个答案:

答案 0 :(得分:1)

我的经验不足..在另一个thread找到解决方案。

解决方案是使用"$i"代替$(i)

a=1
for i in *.jpg; do
  new=$(printf "%04d.jpg" ${a}) #04 pad to length of 4
  mv "$i" ${new}
  let a=a+1
done