Cómo cambiar el nombre de los archivos eliminando el carácter "usando el shell de Linux

1

Tengo una serie de archivos con comillas dobles en el nombre de archivo como este:

"This_is_a_long_filename_with_quotes" .mp3

Intento usar el comando renombrar de linux, puedo borrar el subrayado fácilmente usando

rename 's/_//g' *

pero cuando intento con "no pasa nada (uso -n para ver los cambios):

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

nada cambia de nombre

¡Gracias!

Leosar
fuente
Tu dices ls | grep \" no devuelve nada. Qué tal si echo *\"* o ls *\"*? Si ninguno de estos comandos muestra nada, no tiene archivos con comillas dobles en sus nombres; tienes archivos con pares de comillas simples en sus nombres. Tratar ls | grep \', echo *\'* o ls *\'*. Si esos comandos encuentran tus archivos, renómbralos con rename -n "s/'//g" *.
G-Man
Justo no son dobles comillas! ver el comentario a continuación
Leosar
Son las "citas rizadas". Prueba dos rename operaciones al cortar y pegar los caracteres de cita exacta (abrir y cerrar).
beroe

Respuestas:

2

Tiene "citas inteligentes" en sus nombres de archivo:

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

Prueba el rename comando con los insertados en lugar de "

O sin usar rename puedes hacer el sed opción:

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

Al igual que con todas las operaciones de shell por lotes utilizando mv es más seguro probar / ejecutar en una copia de seguridad de la carpeta original ... Puede probar poniendo echo en lugar de mv cuando lo intentas por primera vez

beroe
fuente
1

No hay necesidad de escapar de la comilla doble de escape dentro de la comilla simple.

rename -n 's/"//g' *
AnFi
fuente
De todos modos, nada se renombra con o sin escape. No sé por qué.
Leosar
1) En mi debian, renombrar es un enlace flexible a otro enlace lógico en / etc / alternative. Persigue los enlaces y utiliza dpkg -S ... en el archivo final para encontrar el paquete que proporciona el ejecutable. 2) Utilizar dpkg -l package_name para encontrar la versión del paquete - & gt; en mi sistema con rename-0.20-3 el comando anterior informó reescribe lo que quería. 3) ¿Qué cáscara usas? echo $SHELL
AnFi
El problema es que no son comillas dobles como lo sugiere @WildVelociraptor
Leosar
0

Pude hacerlo en Bash con esto:

file=$(ls | grep \")
newName=$(echo $file | sed 's/\"//g')
mv $file $newName
zymhan
fuente
Tal vez el mismo problema aquí, porque ls | grep \" no devuelve nada
Leosar
¿Estás seguro de que son comillas dobles? Puede ayudar copiar y pegar el nombre del archivo en otro lugar, para ver cómo se procesa. También podría ser un problema con la forma en que se codifica el nombre de archivo; ASCII vs Unicode, tal vez?
zymhan
Ohh no lo son, este es el nombre del archivo: “Tokyo_String_Quartet-Beethoven_- Late_String_Quartets - CD1-11-Cuarteto, _Op._131_in_C_sharp_minor -_Allegro ”.mp3
Leosar
1
Necesitas cortar y pegar las comillas dobles de apertura y cierre y usarlas. 's / [“”] // g' en su cambio de nombre. (PD: ¡No tengo este problema con mis grabaciones de Lindsay Quartet!)
AFH
Acabo de ver que @beroe hizo el mismo punto en la pregunta original, pero dejaré que mi comentario sea válido, ya que le he dado el comando de edición que necesita.
AFH