Мое устройство записи камер видеонаблюдения (расположенный в удаленном месте), 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
Какая-либо идея что случилось?
На дистрибутиве 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