Renomear o script bash - falso nenhum arquivo ou erro de diretório

1

Estou tentando renomear algumas centenas de arquivos com base em outro arquivo no mesmo diretório. Eu encontrei um script e com modificação eu tenho o seguinte:

while read file; do echo mv "\"${file%/*}/Trailer.mov\"" "\"${file%.*}-Trailer.mov\""; done < <(find . -type f ! -name "Trailer.mov" -name "*.mkv")

Ele gera comandos mv assim:

mv "./dir1/Trailer.mov" "./dir1/filename-Trailer.mov"

Os comandos mv renomear os arquivos corretamente (se existir) quando eu executá-lo manualmente. Quando eu executo o script sem eco, ele dá erros assim:

mv: cannot stat ‘"./dir1/Trailer.mov"’: No such file or directory

Esse erro acontece para cada item, independentemente da existência dos arquivos. Por que isso acontece? Estou correndo como root.

    
por DominicM 17.11.2014 / 00:02

1 resposta

2

Você deve remover as aspas internas ou usar eval .

O problema é que o " s agora é considerado parte do nome do arquivo, ou seja, o nome do arquivo errado (que não existe) é tentado ser acessado.

    
por 17.11.2014 / 00:29