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!


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


1

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

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

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.