bash 通过添加数字批量重命名文件
Posted
技术标签:
【中文标题】bash 通过添加数字批量重命名文件【英文标题】:bash to batch rename files with adding numbers 【发布时间】:2013-10-28 09:08:09 【问题描述】:我有一堆随机名称的 .jpg 文件。我想要一个 bash 脚本来重命名它们:
basename-0.jpg
basename-1.jpg
basename-2.jpg
.
.
.
.
basename-1000.jpg
这是我写的:
n = 0;
for file in *.jpg ; do mv "$file" basename"$n".jpg; n+=1; done
但上述 bash 的问题在于,在循环中,n 被视为字符串,因此 n+1 只是在新移动文件的末尾添加了另一个 '1'。 感谢您的提示。
【问题讨论】:
【参考方案1】:在 bash shell 中使用 $((expression))
进行算术扩展
n=0;
for file in *.jpg ; do mv "$file" basename"$n".jpg; n=$((n+1)); done
【讨论】:
【参考方案2】:你想要'basename'还是$(basename)?更广义的形式是:
# create basename-0.jpg, basename-1.jpg, ... basename-n.jpg
e='jpg'; j=0; for f in *.$e; do mv "$f" basename-$((j++)).$e; done
或
# preserve stem: <stemA>-0.jpg, <stemB>-1.jpg, ... <stem?>-n.jpg
e='jpg'; j=0; for f in *.$e; do mv "$f" "$f%.*"-$((j++)).$e; done
【讨论】:
【参考方案3】:Bash
还可以使用 ((var++))
等算术评估语法预先/后递增/递减变量值。
n=0;
for file in *.jpg ; do mv "$file" basename"$n".jpg; ((n++)); done
【讨论】:
以上是关于bash 通过添加数字批量重命名文件的主要内容,如果未能解决你的问题,请参考以下文章