如何从 01 开始在循环中枚举变量?

如何从 01 开始在循环中枚举变量?

我有个问题

我有重命名命令,但是我从 00 开始运行重命名后,如何从 01 开始,请帮帮我

这是我使用的命令

for i in *.mkv; do
  new=$(printf "Movie - %02d.mkv" "$a")
  mv -i -- "$i" "$new"
  let a=a+1
done

答案1

a=1简单来说就是在开头添加一个变量( ):

#!/bin/bash
a=1
for i in *.mkv; do
  new=$(printf "Movie - %02d.mkv" "$a")
  mv -i -- "$i" "$new"
  let a=a+1
done

以下是您所要求的一行:

a=1; for i in *.mkv; do new=$(printf "Movie - %02d.mkv" "$a"); mv -i -- "$i" "$new"; let a=a+1; done

答案2

也可以用 bash 的算术评估也一样。而且它通常比let内置的更受欢迎

例如,

#!/bin/bash

a=1
for i in *.mkv; do
  new=$(printf "Movie - %02d.mkv" "$a")
  mv -i -- "$i" "$new"
  ((a++))
done

另一方面,如果您更喜欢单行命令,rename则命令可以执行以下操作:

rename 's/\d+/sprintf("Movie - %02d", $&)/e' *.mkv

相关内容