我一直在寻找一个回答类似问题的旧问题,但显然我不太擅长使代码工作。我使用的是 zsh 而不是 bash,但其他 bash shell 脚本运行良好,所以我认为还可以。
我已经从提示中尝试过(内联)
$i=107;for i in *.jpg;do mv "$i" "$i.jpg" $i=$((i+1)); done
基本上,我希望当前的名称如下:
107.jpg 108.jpg 109.jpg 110.jpg
等等到列表的末尾。
希望有人可以帮助我编写代码,我想使用 seq 吗?
谢谢,
答案1
您想要使用两个单独的变量来递增索引和处理文件名:
i=107; for file in *.jpg; do mv "$file" "$((i++))".jpg; done
答案2
由于您正在使用,您可以通过使用其模块zsh
来避免显式循环:zmv
autoload zmv
i=107; zmv -n '*.jpg' '$[i++].jpg'
-n
一旦您对建议的操作感到满意,请删除。