Как перечислить переменную в цикле, начинающемся с 01?

У меня вопрос

У меня есть команда переименования, но после запуска переименования, начиная с 00, как начать с 01, пожалуйста, помогите мне

это команда, которую я использую

for i in *.mkv; do
  new=$(printf "Movie - %02d.mkv" "$a")
  mv -i -- "$i" "$new"
  let a=a+1
done
0
задан 15 July 2020 в 14:42

2 ответа

Просто добавьте переменную ( 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
ответ дан 30 July 2020 в 22:07

То же самое можно сделать и с помощью арифметической оценки 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
1
ответ дан 30 July 2020 в 22:07

Другие вопросы по тегам:

Похожие вопросы: