![批量重命名文件](https://linux22.com/image/38916/%E6%89%B9%E9%87%8F%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6.png)
我有多个名称格式不一致的照片文件。
- 北海滩.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;
命令的开头。