Cómo cambiar el nombre de un grupo de archivos con lo que parece una ruta de archivo de Windows en sus nombres

9

Tengo un montón de archivos con el nombre de archivo desordenado. Todos los nombres de archivo tienen el mismo comienzo que parecen ser directorios de archivos de Windows. El problema es que hay más de 700 archivos y realmente no quiero revisarlos y cambiarles el nombre manualmente. Estos son ejemplos de los nombres de archivo (Nota: ninguno de estos tiene directorios de archivos):

G:some\really\long\file\path\then\the\name1.jpg
G:some\really\long\file\path\then\the\name2.png
G:some\really\long\file\path\then\the\filename.txt
G:some\really\long\file\path\then\the\file_name.mov
...

Lo importante es que cada archivo tiene G:some\really\long\file\path\then\the\antes del nombre de archivo que me gustaría.

Por lo tanto, me gustaría que los archivos anteriores se vean así:

name1.jpg
name2.png
filename.txt
file_name.mov

Intenté el renamecomando y no tuve éxito. Todavía soy nuevo con Linux y realmente no estoy seguro de cómo hacerlo o qué buscar en Google. Cualquier ayuda sería apreciada.

kingcobra1986
fuente

Respuestas:

18

Acabo de eliminar todo hasta la última barra invertida con rename

$ rename -n 's/.*\\//' G*
rename(G:some\really\long\file\path\then\the\file_name.mov, file_name.mov)
rename(G:some\really\long\file\path\then\the\filename.txt, filename.txt)
rename(G:some\really\long\file\path\then\the\name1.jpg, name1.jpg)
rename(G:some\really\long\file\path\then\the\name2.png, name2.png)

Eliminar -ndespués de la prueba para cambiar el nombre de los archivos.

Notas

  • -n no hagas nada, solo imprime lo que se cambiará
  • s/old/newreemplazar oldconnew
  • .* cualquier número de caracteres
  • \\ La primera barra invertida es escapar de la segunda.
  • Como las expresiones regulares son codiciosas, esta expresión también .*\\come todas las barras diagonales anteriores.
  • Dado que los dos últimos delimitadores //están vacíos, todo lo que coincida en la parte de búsqueda se elimina
Zanna
fuente
¿Solo necesito la primera línea o debo hacerlo para cada archivo?
kingcobra1986
solo necesita la primera línea @ kingcobra1986, las otras son solo la salida. *coincide con todos los archivos, pero permítame cambiarlo a G*"hecho", por lo que ahora coincide con todos los archivos que comienzan Gen el directorio actual y funcionará en todos ellos a la vez. Si están en múltiples directorios, también podemos lidiar con eso de varias maneras
Zanna
Eso funciono. ¿Puedes explicar qué sucede exactamente en esa línea?
kingcobra1986
1
@ kingcobra1986 lo siento, agregué notas. Espero que esté claro, si no, ¡no dudes en pedir más!
Zanna
Ja, me gusta la idea de usar el .*\\ .*
sincero
10

Puede hacer esto en puro bashusando la expansión de parámetros de shell .

${file##*\\}(cut-up-last-prefix) elimina todo desde el comienzo del nombre del archivo hasta la última \vez que se ve.

for file in *; do
    mv -v "$file" "${file##*\\}";
done

Los resultados de cambio de nombre son:

‘G:some\\really\\long\\file\\path\\then\\the\\file_name.mov’ -> ‘file_name.mov’
‘G:some\\really\\long\\file\\path\\then\\the\\filename.txt’ -> ‘filename.txt’
‘G:some\\really\\long\\file\\path\\then\\the\\name1.jpg’ -> ‘name1.jpg’
‘G:some\\really\\long\\file\\path\\then\\the\\name2.png’ -> ‘name2.png’
αғsнιη
fuente
6

Si está buscando soluciones GUI , hay muchas aplicaciones de cambio de nombre a granel. Sugeriría Thunar , que es el administrador de archivos predeterminado para Xfce. Viene con una práctica herramienta de cambio de nombre a granel. Puede instalar Thunar ejecutando el siguiente comando en la Terminal:

sudo apt-get install thunar

Probablemente también pueda instalar desde el software Ubuntu.

Cómo usar la utilidad

  1. Una vez que haya instalado Thunar, inicie la utilidad Bulk Rename .
  2. Haga clic en el ícono + y agregue los archivos que desea cambiar de nombre.
  3. Haga clic en el cuadro desplegable debajo de la lista de archivos seleccionados y seleccione Buscar y reemplazar .
  4. En el cuadro Buscar: ingrese G:some\really\long\file\path\then\the\(la parte de la que desea deshacerse), deje el cuadro Reemplazar con: vacío. Debería ver la vista previa de los cambios en la columna Nuevo nombre .
  5. Para aplicar los cambios, haga clic en el botón Cambiar nombre de archivos .

Además de Buscar y reemplazar, esta utilidad admite las siguientes acciones:

  • Insertar fecha / hora
  • Insertar / Sobrescribir
  • Numeración
  • Eliminar personajes
  • Mayúscula minúscula
pomsky
fuente
¿No hay uno para nautilus (creo que sí)? Parece bastante exagerado sugerir instalar un nuevo explorador de archivos para este propósito.
Zanna
@Zanna Hay uno en v3.22, pero creo que todavía no está disponible en los repositorios de Ubuntu.
pomsky
2
Thunar es bastante útil y parece coexistir bien con otros navegadores de archivos, por lo que creo que puede valer la pena instalarlo para este propósito. Pero, ¿puede ampliar esta respuesta con una explicación de cómo hacer un cambio de nombre masivo en Thunar?
Eliah Kagan
1
@EliahKagan y también es ligero
pomsky
Bien hecho, ahora puedo votar (tengo un Xubuntu en el que también puedo probarlo :))
Zanna