Renomeando vários arquivos

1

Meu gravador de câmeras de segurança (localizado em local distante), FTP para meus arquivos de vídeo do servidor após qualquer evento. Cria automaticamente os sudirs com nome contendo data do dia. Usando os comandos find e ffmpeg, o servidor converte o arquivo DAV para AVI e remove o arquivo DAV. Depois disso, cada arquivo de vídeo tem um nome assim:

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

Eu quero mudar o nome acima para o formato assim:

19-38-41.avi

Como posso fazer isso na mesma linha de comando "find"

Eu tento usar como a primeira sintaxe assim:

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

Mas o resultado foi:

rename:not enough arguments

Alguma ideia do que está errado?

    
por mackowiakp 28.09.2014 / 09:22

1 resposta

0

Na distribuição linux estão presentes dois utilitários rename .

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

e

   rename [options] expression replacement file...

No comando renomear do Ubuntu, siga a primeira sinopse, enquanto em outra distribuição linux, a sinopse do renomear é a segundo um.

No Ubuntu, tal rename é rename.ul e se o terceiro parâmetro estiver faltando, ele retornará:

   rename:not enough arguments

Eu acho que você não está usando o Ubuntu, em qualquer caso, tente isto:

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

Testado no lubuntu 12.04 com rename.ul

Em vez de rename , você pode usar este script:

   find . -name "*.dav.avi" | while read file; do newFile='echo $file | awk '{ print substr($0,1,match($0,"\[")-1) ".avi"; }''; mv $file $newFile; done
    
por Lety 28.09.2014 / 17:41