LINUX.ORG.RU

копирование файла с порядковвым номером

 , , ,


0

2

Здравствуйте

У меня секвенция png

Нужно отдать это ребятам на монтаж. Но их адобы (и/или они) бессильны в данном случае.

Поэтому, вопросы:

1) как повысить номера кадров на 5 единиц, т.е например чтоб 08_OUTRO+5_0000.png стал 08_OUTRO+5_0005.png

UPD: пробовал так

find . -name '*.png' | gawk 'BEGIN{ a=5 }{ printf «mv \»%s\" 08_OUTRO+5_%04d.png\n", $0, a++ }' | bash

перемешивает файлы, фальшиво именует

2) как скопировать 08_OUTRO+5_0005.png в копии, только с именами с 08_OUTRO+5_0001.png по 08_OUTRO+5_0004.png

У меня часто меняется номер первого файлв/кадра, бывает не только 5 но, и 3, и 4, поэтому в идеале,

как определить первый файл в папке и его скопировать нужное кол-во раз и с порядковым номером, и одновременно удалить это же количество файлов в конце?

for i in {1..5}; do cp 08_OUTRO+5_0005.png  08_OUTRO+5_000${i}.png; done

как определить первый файл

Вообще не понял что ты имеешь ввиду

и одновременно удалить это же количество файлов в конце?

Добавь rm в однострочник выше (перед done)

alozovskoy ★★★★★ ()
Последнее исправление: alozovskoy (всего исправлений: 1)
Ответ на: комментарий от alozovskoy

for i in {1..5}; do cp 08_OUTRO+5_0005.png 08_OUTRO+5_000${i}.png; done

то что надо

как определить первый файл

я сейчас отпредактировал первое сообщение

Добавь rm

а как?

ps:for i in {1..5}; do cp 08_OUTRO+5_0005.png

чтоб вообще была малина, если бы определялось название до порядкового номера - 08_OUTRO+5_ , без его указания

brothermechanic ★★★★★ ()
Ответ на: комментарий от brothermechanic

Так, давай еще раз словами: есть много файлов с именами A_OUTRO+B_000C.png. Нужно взять каждый файл с C = 0, скопировать его B раз (при этом заменяя C на номер итерации) и удалить файлы с A_OUTRO+B_000Cmax.png до A_OUTRO+B_000(Cmax-B).png. Так? Число A меняется ли и значит ли что-то?

alozovskoy ★★★★★ ()
Ответ на: комментарий от alozovskoy

спасибо за помощь

в принципе сейчас нашел приемлемый алгоритм с граблями

1) переименовать файлы с повышением порядкового номера на 5

например 08_OUTRO_0000.png должен стать 08_OUTRO+5_0005.png

сделал в krename, собственно, я знаю эту программу, но не находил ее для kf5, сейчас нашел, вот репа https://github.com/sandsmark/krename, и установил, вот если кому нужно - https://github.com/brothermechanic/cg/tree/master/kde-apps/krename

2) так как теперь номера наших файлов начинаются с 0005 нужно чем то заполнить первые кадры с именами с 0001 по 0004

тут в помощь Ваш скрипт

for i in {1..4}; do cp 08_OUTRO_+5_0005.png 08_OUTRO_+5_000${i}.png; done

отлично

(поясню, что новая нумерация теперь с 1)

3) удаляю последние 5 файлов - вручную

Вот такой алгоритм

brothermechanic ★★★★★ ()
Ответ на: комментарий от brothermechanic

если охота заморочится, то можно повысить логику чтоб в п2 не вписывать часть имени 08_OUTRO_+5_000 самому, чтоб он автоматом определился

если еще сложнее - определить первый файл и если он например xxx_0004.xx - то отправить это число в for чтоб был интервал {1..3}

ну и автоудаление конечных файлов

brothermechanic ★★★★★ ()
Ответ на: комментарий от brothermechanic

Автоудаление последних файлов можно сделать вот таким костылем

for i in {1..4}; do cp 08_OUTRO_+5_0005.png 08_OUTRO_+5_000${i}.png; rm -f $(ls 08_OUTRO_+5*.png | tail -n 1); done

С определением файлов можно использовать подобый башизм, но тут если длина имени файла может меняться придется поизгаляться

$ filename=08_OUTRO_+5_0005.png
$ echo ${filename:10:1}
5

alozovskoy ★★★★★ ()
Ответ на: комментарий от alozovskoy

суупер!

for i in {1..4}; do cp 08_OUTRO_+5_0005.png 08_OUTRO_+5_000${i}.png; rm -f $(ls 08_OUTRO_+5*.png | tail -n 1); done

то что нужно

спасибо Вам, помогаете тут)

ну может не только мне это будет полезно

brothermechanic ★★★★★ ()
Последнее исправление: brothermechanic (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.