нулевое дополнение имен файлов

Я хочу сделать дополнение нуля для названий файлов. что должно я делать, если не все изображения существуют как 1. JPEG не существует или 99. JPEG или 110. JPEG?

 $ for n in $(seq 9); do mv $n.JPEG 0$n.JPEG; done; mv: cannot stat ‘1.JPEG’: No such file or directory

Я не хочу переименовывать вручную, потому что порядок видео важен.

0
задан 10 November 2019 в 21:19

2 ответа

Можно использовать if в цикле, чтобы проверить, существует ли файл. И если это делает, затем только mv операция произошла бы.

for n in $(seq 9) 
do 
  if [[ -f $n.JPEG ]] 
  then 
       mv $n.JPEG 0$n.JPEG 
  fi 
done;

Или в одной строке:

for n in $(seq 9); do if [[ -f $n.JPEG ]]; then mv $n.JPEG 0$n.JPEG; fi done;
1
ответ дан 22 December 2019 в 00:01

Используя расширение параметра можно разделить имя файла на имя и расширение, затем склеить их вместе с printf форматирование

#!/bin/bash

for i in *; do
    mv $i $(printf %04d.%s\\n ${i/./ })
done

форматирование printf:

  • %04d цифра клавиатуры с четырьмя нулями.
  • %s     Строка символов.

$ {параметр/шаблон/строка}

  • Замена шаблона; параметр расширен, и самое долгое соответствие шаблона против его значения заменяется строкой.
1
ответ дан 22 December 2019 в 00:01

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

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