Copiar nombres de archivo a otra carpeta


0

Necesito copiar nombres de archivos de una carpeta a otra. El contenido del archivo nunca cambia. No se sobrescriben, mueven ni copian archivos. Solo se trata de nombres de archivos .

Tengo una carpeta A con archivos llamados:

  • Show - S01E01 - Título descriptivo.mkv
  • Show - S01E02 - ¿Otro título descriptivo? .Mkv
  • Show - S01E03 - ¡Otro nombre complejo! .Mkv
  • ...

Tengo una carpeta B con archivos llamados:

  • show.s01e01.mkv
  • show.s01e02.mkv
  • show.s01e03.mkv
  • ...

Ya no necesito los archivos en la carpeta A porque los archivos en la carpeta B tienen una mejor calidad. Pero no quiero cambiar manualmente el nombre de todos los archivos en la carpeta B para tener el nombre de archivo adecuado, incluido el título del episodio. Me gustaría transferir automáticamente los nombres de archivo adecuados de los archivos en la carpeta A a los archivos en la carpeta B. El orden alfabético es idéntico en ambas carpetas. Entonces, el enésimo archivo en la carpeta B corresponde al enésimo archivo en la carpeta A. En la carpeta final B contendría exactamente los mismos nombres de archivo que en la carpeta A, pero el contenido de los archivos es diferente, por supuesto.

Ejemplo:

Antes de:

Carpeta A:

  • Mostrar - S01E01 - Manzanas Verdes.mkv
  • Show - S01E02 - Melocotones en el cielo.mkv

Carpeta B:

  • show.s01e01.mkv
  • show.s01e02.mkv

Después:

Carpeta A:

  • Mostrar - S01E01 - Manzanas Verdes.mkv
  • Show - S01E02 - Melocotones en el cielo.mkv

Carpeta B:

  • Mostrar - S01E01 - Manzanas Verdes.mkv
  • Show - S01E02 - Melocotones en el cielo.mkv

¿Cómo hago esto en Bash? (O cualquier otra herramienta GNU / Linux, KDE también está bien)


¿Te refieres a copiar los que aún no existen en la otra carpeta?
Paul

Ambos conjuntos de archivos ya existen. Los nuevos tienen una mejor calidad, por ejemplo. No quiero cambiarles el nombre manualmente y agregar el título de cada episodio, pero tomar los nombres de la versión anterior y usarlos para la nueva versión.
problemofficer

Es un poco difícil de entender, intente agregar un ejemplo de la salida deseada.
meda

Agregué un ejemplo.
problemofficer

Respuestas:


0

Hacer lo que quieras requeriría algunas secuencias de comandos. No está demasiado involucrado, pero está reinventando un poco la rueda.

Lo que sugeriría es instalar tvnamer https://github.com/dbr/tvnamer

Esto usará una base de datos para cambiar constantemente el nombre de todos sus medios. Si ejecuta esto en todo, los programas de baja y alta calidad tendrán el mismo nombre, por lo que puede copiar los de alta calidad sobre los de baja calidad cp.


0

Puedes probar bash arrays. Estoy dando una solución esquelética a continuación.

cd $DIR1
list1=( * )

cd $DIR2
i=0
for f in *
do
  mv $f ${list1[$i]}
  (( i += 1 ))
done

Como mencionó en la pregunta, la suposición es que el número exacto de archivos está en ambos directorios y alfabéticamente están en orden. Se pueden realizar más verificaciones de errores y la coincidencia de patrones para que sea robusto.

list1 es una matriz con los nombres de archivo en ese directorio. $ {list1 [0]} es el primer elemento de la matriz, etc. No estoy seguro de si esto funcionará con nombres de archivo con espacios en blanco, etc.

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.