批量重命名文件

批量重命名文件

我有多个名称格式不一致的照片文件。

  • 北海滩.JPG
  • 南海滩 sm.jpg
  • 布莱斯风帆冲浪 sm.jpg
  • DSC01031 1024x.jpg
  • DSC02652 编辑 sm.jpg
  • DSC03229 sm.jpg
  • 皮划艇儿童 2.jpg
  • 毛伊岛 5-05 (31) 1024.jpg
  • 毛伊岛秋天 05 (41) sm.jpg
  • 毛伊岛鲸鱼 (2) sm.jpg
  • 毛伊岛鲸鱼 (6) ed.jpg
  • P1000018 sm.jpg
  • P1000030 sm.jpg
  • P1000056 sm.jpg
  • P1000148 sm.jpg
  • P1000397 sm.jpg
  • P1000490 sm.jpg
  • P1000629 sm.jpg
  • P1000995 sm.jpg
  • P1010006 1024.jpg
  • P1010089 1024x.jpg
  • P1050988 ed sm.jpg

我不想重命名扩展名,而是将列表中的第一个 .jpg 重命名为 1.jpg、第二个 2.jpg、第三个 3.jpg 等。如何使用一个命令执行此操作?

答案1

只需在 shell 中使用循环即可:

for x in * ; do mv -- "$x" "$((i=i+1)).jpg" ; done

我们一次查看当前目录中的每个文件,调用它x,然后将其移动到,每次$i.jpg递增1。是$i$((...))算术展开,并且赋值返回分配的值,因此i每次都会修改并返回新数字。

如果您要多次执行此操作,例如在不同的目录中,则需要重置其间的计数器:只需说i=0, 或放在i=0;命令的开头。

相关内容