duplicar una estructura de carpeta / archivo usando un archivo de marcador de posición

1

Tengo una gran biblioteca de medios digitales. La mayor parte se mantiene "fuera de línea", pero el software de biblioteca que uso (Plex) utiliza archivos multimedia para crear la biblioteca, por lo que necesito usar archivos de marcador de posición.

Usando videos de 30 segundos de "este archivo se archiva", puedo catalogar fácilmente películas sin conexión en Plex. "Rsync" la estructura del directorio sin archivos y luego "cp" un marcador de posición en cada directorio de la película y cambio el nombre con la carpeta principal.

Para los programas de televisión, esto no es práctico, ya que puede haber cientos de episodios por programa. Me gustaría saber si hay una manera de duplicar la estructura de carpetas / archivos de un programa de televisión, con muchos episodios en una sola carpeta, utilizando el mismo archivo de marcador de posición.

Creo que hay una forma de crear carpetas a partir de los nombres de archivo, luego copiar el marcador de posición en cada nueva carpeta, cambiar el nombre usando el nombre de la carpeta y luego mover los archivos a un solo directorio, pero no sé cómo.

    
pregunta Jon Allen 21.06.2018 - 01:09

1 respuesta

0

Esto es lo que haría (puede haber formas más eficientes de automatizar esto, pero este es un truco rápido que debería lograr lo que necesitas). Espero haber entendido tu pregunta correctamente.

Para obtener una lista de todos los directorios (y sus subdirectorios) dentro de un directorio existente:

Abra Terminal y navegue hasta la carpeta existente que contiene la estructura que le gustaría duplicar (si no está familiarizado con Terminal, me complace ofrecerle una guía más específica sobre cómo hacerlo. Básicamente, si piensa en Terminal como Finder, la carpeta predeterminada que está "viendo" cuando abre Terminal es su carpeta de usuario. Desde allí, puede escribir pwd para ver dónde está, ls para ver una lista de todo lo que hay en el directorio actual, cd [folder name] para moverse a una carpeta en el directorio, y luego cd .. para volver a subir un nivel al directorio principal).

Escriba el siguiente comando:

find . -type d

Esto mostrará una lista de todos los directorios contenidos en el directorio actual , así como cada uno de sus subdirectorios (es decir, no dejará de buscar hasta que no haya más subdirectorios para ingresar).

La lista tendrá entradas que se parecerán a esto:

./directory1
./directory1/subdirectory1
./directory2
./directory2/sub2/sub3/sub4

Necesitamos limpiar el formato un poco antes de poder usar este texto.

Para limpiar el texto para que pueda utilizarse para recrear la estructura de esa carpeta:

Copie esta lista en cualquier editor de texto plano (no Microsoft Word); Yo uso TextWrangler pero TextEdit viene con su computadora. Usando la función de buscar y reemplazar, elimine cada instancia de ./ (deje el cuadro "reemplazar con" en blanco y presione reemplazar todo). Esto eliminará todos los puntos y barras iniciales, pero conservará las barras que indican subdirectorios.

También, elimine todas las líneas nuevas (es decir, el texto puede ajustarse en varias líneas, pero no debería haber párrafos nuevos explícitos allí). El ejemplo anterior ahora se verá como:

directory1 directory1/subdirectory1 directory2 directory2/sub2/sub3/sub4

Para crear un número arbitrario de carpetas nuevas con un solo comando:

Nota: También puedes realizar este paso utilizando nombres de carpetas de una fuente diferente. Me confundió un poco por cuál era la fuente de los nombres de las carpetas en tu pregunta

Ahora debería tener una lista de carpetas / subcarpetas que están todas en una línea (aunque puede incluirse en varias líneas cuando se representa en su editor de texto), y no tiene puntuación *. Copia todo este texto a tu portapapeles. Regrese a la Terminal y use cd [folder] , cd .. , ls y pwd para navegar a la carpeta de destino donde desea recrear la estructura de la carpeta, como se describe anteriormente.

Una vez que estés en la carpeta correcta, escribe:

mkdir -p y luego comando v , y pulsa enter. Asegúrese de que haya un espacio (y nada más) entre mkdir -p y el primer nombre de directorio, y un espacio entre cada nombre de directorio posterior.

Sé que las personas tienen distintos niveles de familiaridad con UNIX y el entorno de Terminal Server, por lo que si esto es confuso, no dude en comentar qué pasos necesitan más aclaraciones.

* Tenga en cuenta que si alguno de los nombres de directorio que pega en la Terminal tiene espacios o caracteres no alfanuméricos, como (./'!?:_) , etc., debe evitarlos o no funcionará. Es decir, para cada espacio u otro carácter extraño, debe poner un \ directamente delante de él (observe la diferencia entre \ y / ). Entonces music/the beatles se convierte en music/the\ beatles . También puede usar buscar y reemplazar para esto.

    
respondido por el Luke Baumann 22.06.2018 - 23:29

Lea otras preguntas en las etiquetas