Переименование нескольких файлов с помощью Bash [дубликат]

Мне нужно обработать много файлов, и мне нужно заменить их исходные имена в этом формате в bash:

00000000000001_1.jpg 
00000000000002_1.jpg
00000000000003_1.jpg

и так далее

1
задан 20 March 2018 в 00:40

2 ответа

Адаптированный из одного из ответов Oli:

rename -n 's/.+/our $i; $i++; sprintf("%014d_1.jpg", $i)/e' *

Это берет каждый файл в текущем каталоге и переименовывает его с числом с 14 цифры (я надеюсь, что рассчитал правильно), сопровождаемый _1.jpg. our $i представляет глобальную переменную i, который затем увеличен одним и распечатан с sprintf. e команды rename оценить правую сторону замены (= все между вторым и третьим /) как выражение, а не буквально. Если Вы довольны результатами, удаляете -n выполнить переименование.

Если Вы хотите погрузиться в выражения жемчуга и их красоту, perldoc является способом пойти.

4
ответ дан 3 December 2019 в 06:30

Был бы это работать на Вас:

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
.
.
2
ответ дан 3 December 2019 в 06:30

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

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