2012-03-11 6 views
1

Я отобразил 140000 кадров, чтобы создать их фильм. Однако он начинается с 1.png, где было бы лучше, если бы оно началось с 000001.png, чтобы сохранить порядок при импорте в окончательный кусок.пакетное переименование файлов на дату

Раньше у меня была программа r-name, но она была основана на power-pc, поэтому она больше не работает. Кроме того, программа была довольно дерьмо с даже пакетом из 300 файлов, например, я думаю, было бы лучше использовать терминал для этого.

Я видел примеры для переименования, но чаще всего для изменения расширения, например, или для изменения префикса.

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

ответ

1
for i in *.png 
do 
    name=${i%.png} 
    [[ $name =~ ^[0-9]+$ ]] && mv $i "$(printf '%06d' $name).png" 
done 
+0

Должен ли я набирать это в 1 раз или возвращать после каждой строки? – clankill3r

+0

Вы можете поместить все в одну строку sep ';' – kev

+0

no ';' after 'do' – kev

2

не очень эффективно, но так как вам нужно, чтобы запустить его только один раз:

for i in `seq 1 140000`; do 
    mv $i.png `printf %06d $i`.png 
done 

EDIT: я предположил (возможно, ошибочно), что вы использовали Linux. Это не будет работать в Windows.

EDIT: Да, это должно работать в Mac OS X. Вместо ввода этих строк в приглашение вы можете сохранить его в файл. Обычно вы сохраняете такой файл с таким именем, как rename.sh. Затем вы можете запустить его на терминале, как это:

sh rename.sh 

Если вы не знаете, вы можете изменить mv линию в:

echo mv $i.png `printf %06d $i`.png 

Это выведет на экран команды, которые будут казнены. Затем, если все выглядит нормально, вы меняете его обратно на оригинал и запускаете его снова.

Если количество файлов отличается, просто замените 140000 номером последнего файла.

+0

я использовать Mac OS X, так что это должно работать правильно? Я проверил, поиск говорит, что это 121596 файлов в точности, но когда я копирую пасту в другую, это что-то в 140000 (немного больше), так что я должен делать с 140000 в вашем скрипте? Также я должен набирать это как одну строку или в 3 раза? – clankill3r

+1

Я отредактировал свой ответ, чтобы ответить на ваши вопросы. –

+0

Я пометил ответ Кева как принятую причину, потому что он чище, и я думаю, что важно, чтобы качество stackoverflow выбиралось на основе этого. (и я использовал его строки). Однако вы, где действительно отличная помощь во всем этом, благодаря этому. Пожелать я могу отметить 2 ответа ... – clankill3r

1

Если вы используете Windows,

@echo off 
setlocal enableDelayedExpansion 
for %%F in (*.png) do (
    set "name=00000%%~nF" 
    ren "%%F" "!name:~-6!.png" 
)