bash通过添加数字批量重命名文件

bash通过添加数字批量重命名文件,bash,batch-rename,Bash,Batch Rename,我有一堆带有随机名称的.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”。 谢谢你

我有一堆带有随机名称的.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”。 谢谢你的提示

在bashshell中使用
$((表达式))
进行算术扩展

n=0;
for file in *.jpg ; do mv  "${file}" basename"${n}".jpg; n=$((n+1));  done

您想要'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

#保留阀杆:-0.jpg,-1.jpg-n、 jpg
e='jpg';j=0;以*$e表示的f;执行mv“$f”“${f%.*}”-$((j++).$e;完成

Bash
还可以使用算术求值语法(如
((var++)
)对变量值进行前后递增/递减

# 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
n=0;
for file in *.jpg ; do mv  "${file}" basename"${n}".jpg; ((n++));  done