На этот вопрос уже есть ответ здесь:
Мне нужно обработать много файлов, и мне нужно заменить их исходные имена в этом формате в bash:
00000000000001_1.jpg
00000000000002_1.jpg
00000000000003_1.jpg
и так далее
Адаптированный из одного из ответов Oli:
rename -n 's/.+/our $i; $i++; sprintf("%014d_1.jpg", $i)/e' *
Это берет каждый файл в текущем каталоге и переименовывает его с числом с 14
цифры (я надеюсь, что рассчитал правильно), сопровождаемый _1.jpg
. our $i
представляет глобальную переменную i
, который затем увеличен одним и распечатан с sprintf
. e
команды rename
оценить правую сторону замены (= все между вторым и третьим /
) как выражение, а не буквально. Если Вы довольны результатами, удаляете -n
выполнить переименование.
Если Вы хотите погрузиться в выражения жемчуга и их красоту, perldoc является способом пойти.
Был бы это работать на Вас:
i=1
for file in *; do
mv "$file" "$(printf %014d $i)_1.jpg"
i=$((i+1))
done
Это переименует каждый файл в текущем каталоге как это:
00000000000001_1.jpg
.
.
00000000000009_1.jpg
.
.
00000000000010_1.jpg
.
.