Как переименовать несколько имен файлов на основе правильного утверждения? - PullRequest
0 голосов
/ 17 мая 2019

Мне нужно перебирать файлы, чтобы изменить их имена сразу, используя git bash. Мои файлы просто названы в таком порядке.

  • (1) .mp3
  • (2) .mp3
  • (3) .mp3
  • (4) .mp3
  • (5) .mp3
  • (6) .mp3
  • ... до (300) .mp3

Мне нужно создать программу для переименования файлов в зависимости от условия, чтобы разделить их на следующие главы.

  • 1_chapter-1.mp3
  • 2_chapter-1.mp3
  • 3_chapter-1.mp3
  • 4_chapter-1.mp3
  • 5_chapter-1.mp3
  • 6_chapter-1.mp3
  • глава-2, глава-3, глава-4, глава-5 и т. Д.

Итак, я сделал оператор if, чтобы включить его в оператор цикла, но в моем операторе if произошла ошибка.

например asume f = "(9) .mp3"

 if [ ${f//[!0-9]/} <= 10]; then
     echo "rename to " + ${f//[!0-9]/} "_chapter-1"
 elif [ ${f//[!0-9]/} <= 20] && [ ${f//[!0-9]/} > 10 ]; then
     echo "rename to " + ${f//[!0-9]/} "_chapter-2"
 elif [ ${f//[!0-9]/} <= 30] && [ ${f//[!0-9]/} > 20 ]; then
     echo "rename to " + ${f//[!0-9]/} "_chapter-3"
 .... etc
 else
     echo "do nothing"
 fi
bash: [: missing `]'
do nothing

Надеюсь, это достаточно откроет то, что я ищу.
Теперь я не знаю, почему он всегда давал один и тот же результат «ничего не делать», как показано в коде.

Как правильно выполнить одну и ту же цель для имен файлов от 1 до 10 (указатель + глава-1), от 11 до 20 (указатель + глава-2), от 12 до 30 (указатель + глава-3) и так, как показано в списке переименования выше.

примечание: главы не равны, так что, возможно, глава-1 имеет 10 mp3-файлов, в то время как глава-11 имеет, например, 12 или 50 mp3.

...