В следующем скрипте bash, если j = 0000, как мне изменить следующий скрипт bash, чтобы сделать каталоги с именами 0001, 0002, ...? Собственно это делают режиссеры по имени 1, 2, 3
for i in *.jpg; do let j+=1 ; mkdir $j ; done
Спасибо!
Ваш текущий скрипт использует только десятичное значение - это, очевидно, преобразуется в значение без начальных нулей.
Вы должны дополнить строку длиной до 4 символов, с ведущими нулями. Вы делаете это с помощью обратных кавычек, ``
чтобы получить результат вызова printf printf %04d $j
.
В результате у вас должна быть полная команда:
for i in *.jpg; do let j+=1; mkdir `printf %04d $j`; done
Источник: StackOverflow: Bash - Заполнение нулей в строке
(Очевидно, также посмотрите дальнейшие ответы на этот вопрос, если вы хотите более глубокое решение, но это определенно работает отлично для этого варианта использования.)
Используя bash, ваш лучший вариант:
mkdir {0001..0666}
создать dir с именем 0001
to 0666
(с нулевым заполнением).
Если вы хотите , каталоги с именем prefix0001suffix
, prefix0002suffix
... то:
mkdir prefix{0001..0666}suffix
Сделаю.
Если вы хотите только нечетные номера имен каталогов
mkdir {0001..0666..2}
и так далее ... См. Расширение скобок в bash
справочном руководстве .
Как указывает FEichinger, вам нужно заранее знать количество каталогов. Если вам нужно решение, близкое к вашему, но действительно безопасное и использующее более современные идиомы bash:
for i in *.jpg; do ((++j)); mkdir $(printf "%04d" $j) ; done