0

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

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

这里

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

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

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

4

1 回答 1

1

我缺乏经验..在不同的线程中找到了解决方案。

解决方案是使用"$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
于 2013-08-21T12:57:19.133 回答