Renomeia os caracteres dentro de um arquivo específico usando localização e variáveis?

0

Eu tenho um arquivo que se parece com o seguinte:

/var/www/html/media/2018@03@01@vi_0005_20180301_110203.h264.v0005.th.jpg .

Eu gostaria de encontrar este arquivo em /var/www/html/media e renomear h264 para mp4 dentro de um script bash executado a partir de uma pasta diferente.

Minhas variáveis são:

mediapath="/var/www/html/media"
filemp4=vi_0005_20180301_110203.mp4
fileh264=vi_0005_20180301_110203.h264

Eu tentei o comando rename (que funciona sem variáveis), mas ele reclamou ao usá-los. Eu também não sei como fazer isso aparecer na pasta de mídia.

rename 's/${fileh264}/${filemp4}/' *${fileh264}*

Global symbol "$mediapath" requires explicit package name (did you forget to declare "my $mediapath"?) at (user-supplied code).
Global symbol "$fileh264" requires explicit package name (did you forget to declare "my $fileh264"?) at (user-supplied code).
Global symbol "$mediapath" requires explicit package name (did you forget to declare "my $mediapath"?) at (user-supplied code).
Global symbol "$filemp4" requires explicit package name (did you forget to declare "my $filemp4"?) at (user-supplied code).

Eu também tentei usar find e mv , mas não tenho certeza de onde está dando errado.

find ${mediapath} -name "*${fileh264}*" -exec bash -c 'mv $0 ${0/${fileh264}/${filemp4}}' {} \;

Qualquer ajuda seria muito apreciada! Obrigado.

    
por allemtura 01.03.2018 / 12:46

2 respostas

1

A solução é que eu precisava de aspas duplas:

rename "s/${fileh264}/${filemp4}/" ${mediapath}/*${fileh264}*
    
por 01.03.2018 / 13:00
0

As citações podem ser um problema no bash.

Você deve ter em mente que uma única cota não interpreta nada. Um $ é interpretado como um ASCII $ e não como o início de uma variável.

Você pode combinar diferentes formas de cotações para atingir metas diferentes. Eu recomendaria verificar o seguinte link e ler a seção "Citações strongs". link

Como disse @allemtura, a maneira correta é usar doublequotes para interpretar as variáveis corretamente.

    
por 01.03.2018 / 15:51