Переименование нескольких файлов

Мое устройство записи камер видеонаблюдения (расположенный в удаленном месте), FTP к моим видеофайлам сервера после любого события. Это автоматически создает sudirs с именем, содержащим дату дня. Используя находку и команды ffmpeg, сервер преобразовывает файл DAV в AVI, и удалите файл DAV. После этого каждый видеофайл имеет имя как это:

19.38.41-19.38.55[M][@0][0].dav.avi

Я хочу измениться выше имени к формату как это:

19-38-41.avi

Как я могу сделать это в том же, "находят" командную строку

Я пытаюсь использовать в качестве первого, синтаксиса как это:

find $katalog -name '*.dav.avi' -execdir rename 's/\.dav//' {} \;

Но результат был:

rename:not enough arguments

Какая-либо идея что случилось?

1
задан 28 September 2014 в 12:45

1 ответ

На дистрибутиве Linux существующий два rename утилита.

   rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]

и

   rename [options] expression replacement file...

На Ubuntu переименовывают команду, следуют первому резюме, в то время как в другом дистрибутиве Linux, переименуйте резюме команды, второй.

На человечности такой rename rename.ul и если третий параметр будет отсутствовать, то он возвратится:

   rename:not enough arguments

Я предполагаю, что Вы не используете Ubuntu, в любом случае, попробуйте это:

   find $katalog -name '*.dav.avi' -execdir rename .dav.avi .avi {} \;

Протестированный на lubuntu 12.04 с rename.ul


Вместо rename, можно использовать этот сценарий:

   find . -name "*.dav.avi" | while read file; do newFile=`echo $file | awk '{ print substr($0,1,match($0,"\\[")-1) ".avi"; }'`; mv $file $newFile; done
0
ответ дан 4 August 2019 в 14:05

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

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