Como renomear arquivos excluindo o "caractere usando o shell linux

1

Eu tenho um número de arquivos com aspas duplas no nome do arquivo assim:

"This_is_a_long_filename_with_quotes".mp3

Eu tento usar a renomeação do comando linux, eu posso apagar facilmente o sublinhado usando

rename 's/_//g' *

mas quando eu tento com \ "nada acontece (eu uso -n para ver as mudanças):

rename -n 's/\"//g' *

nada é renomeado

obrigado!

    
por Leosar 04.09.2014 / 23:36

3 respostas

2

Você tem "aspas inteligentes" nos seus nomes de arquivo:

“Tokyo_String_Quartet-Beethoven_-Late_String_Quartets-CD1-11-Quartet”.mp3 

Experimente o comando rename com os inseridos em vez de "

Ou sem usar rename , você pode fazer a opção sed :

for f in *.mp3
    do
        new=$(echo $f | sed -E 's/[“”]//g')
        mv $f $new
    done

Como em todas as operações de shell em lote usando mv , é mais seguro testar / executar em um backup da pasta original ... Você pode testar colocando echo no lugar de mv na primeira tentativa.

    
por 05.09.2014 / 03:28
1

Não há necessidade de escapar da citação dupla de escape dentro de um único guote.

rename -n 's/"//g' *
    
por 04.09.2014 / 23:47
0

Eu consegui fazer isso no Bash com isso:

file=$(ls | grep \")
newName=$(echo $file | sed 's/\"//g')
mv $file $newName
    
por 04.09.2014 / 23:49