我有一堆随机名称的.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'。 感谢您的提示。
答案 0 :(得分:14)
在bash shell中使用$((expression))
进行算术扩展
n=0;
for file in *.jpg ; do mv "${file}" basename"${n}".jpg; n=$((n+1)); done
答案 1 :(得分:4)
Bash
也可以使用((var++))
之类的算术评估语法预先/后递增/减少变量值。
n=0;
for file in *.jpg ; do mv "${file}" basename"${n}".jpg; ((n++)); done
答案 2 :(得分:3)
您想要'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