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)
fuente
Respuestas:
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/tvnamerEsto 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
.fuente
Puedes probar bash arrays. Estoy dando una solución esquelética a continuación.
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.
fuente