Copie una carpeta (y su estructura interna), pero solo incluya archivos específicos

2

Tengo una carpeta (con subcarpetas y otras subcarpetas) en la que la carpeta final tiene muchos tipos de archivos diferentes. Estos tipos de archivos incluyen imágenes (.png / .jpeg), videos (.mov) y archivos de texto (.txt). Pero me gustaría copiar la carpeta completa (con la estructura interna) y solo incluir .mp3. ¿Alguien tiene alguna idea de cómo hacer esto? (por favor, no lo digas manualmente porque hay más de 100 carpetas y la carpeta en sí es de 60 GB, así que no me digas que copie toda la carpeta) Preferiblemente, me gustaría que alguien me diera una solución donde pueda moverme directamente the .mp3's (preservando la estructura de la carpeta)

    
pregunta BobRon 15.06.2015 - 02:02

2 respuestas

1

Los dos comandos siguientes, utilizados en una Terminal, pueden lograr lo que usted pidió, el primero creando una estructura de directorios jerárquica de destino que contiene los archivos * .mp3 y el segundo comando que elimina los archivos * .mp3 de la estructura jerárquica de directorios de origen .

Nota: asegúrese de tener las copias de seguridad adecuadas antes de usar el segundo comando, ya que un error puede ser fatal.

Abrir Terminal.

Por defecto, el Terminal se abre en su Directorio principal , así que lo usaré como punto de inicio de ejemplo y el Directorio de música como la estructura de directorio jerárquica de origen .

Este primer comando hará una copia de la estructura jerárquica de directorios de música que solo contiene los archivos * .mp3 en el directorio de destino . En otras palabras, después de ejecutar el primer comando, habrá un directorio de destino que contiene la misma estructura jerárquica de directorios a partir de Música dentro de directorio de destino que contiene solo los archivos * .mp3 y solo los directorios del origen que contienen * .mp3 archivos. Si un directorio de origen no contiene un archivo * .mp3 , ese directorio no se crea en la estructura jerárquica del directorio de destino .

Nota: la línea de comandos completa se extiende fuera de la vista sin desplazamiento horizontal.

find ./Music -name "*.mp3" -type f -print0 | xargs -0 -I '{}' /usr/bin/rsync -avR "{}" "./mp3 files only/"

Nota: el comando completo se muestra en dos líneas para mayor claridad:

find ./Music -name "*.mp3" -type f -print0 | \
xargs -0 -I '{}' /usr/bin/rsync -avR "{}" "./mp3 files only/"

Cuando finalice el comando anterior, habrá un directorio en mi Directorio principal llamado "solo archivos mp3" y dentro de ese directorio habrá una Estructura de directorio jerárquica musical que solo contenga los archivos * .mp3 . Nota: Si el directorio de destino no existe, se creará automáticamente.

Ahora que los archivos * .mp3 se han copiado de la estructura de directorio jerárquica de la música de origen al directorio "solo archivos mp3" el Los archivos * .mp3 se pueden eliminar de la estructura jerárquica de directorios de música de origen con el siguiente comando.

find  ./Music/ -name "*.mp3" -delete

Eso es todo, los archivos * .mp3 junto con su estructura jerárquica de directorios se han copiado en una nueva ubicación y el * .mp3 archivos eliminados de la fuente .

    
respondido por el user3439894 15.06.2015 - 03:51
0

Sin ir a una secuencia de comandos de línea de comandos algo compleja, creo que copiar la carpeta completa y luego buscar y eliminar los archivos que no deseas (fácil a través de la búsqueda del Finder) sería la forma más fácil. Avíseme si desea detalles (o si copiar la carpeta completa sería un anatema).

    
respondido por el Daniel Griscom 15.06.2015 - 03:30

Lea otras preguntas en las etiquetas