Copie tipos de archivos específicos mientras mantiene la estructura del directorio en Linux

Hace un tiempo, aprendimos cómo copiar cierto tipo de archivos de un directorio a otro en linux Hoy vamos a hacer lo mismo pero conservando la estructura del directorio también. Este breve tutorial explica cómo copiar tipos de archivos específicos manteniendo la estructura de directorios en Linux. Aquí he dado dos maneras diferentes de hacer esto. Simplemente elija cualquiera que funcione para usted.

Copie tipos de archivos específicos mientras mantiene la estructura del directorio en Linux

Imagina este escenario.

tengo un directorio llamado “linux” con diferentes tipos de archivos guardados en diferentes subdirectorios. Eche un vistazo a la siguiente estructura de directorios:

                      
                        $ tree Linux/
                      
                      
Linux/
├── dir1
│   ├── English
│   │   └── Kina - Can We Kiss Forever.mp3
│   ├── Instrumental
│   │   └── Chill Study Beats.mp3
│   └── Tamil
│       ├── Kannan Vanthu.mp3
│       └── yarenna.mp3
├── dir2
│   ├── file.docx
│   └── Raja Raja Chozan Naan.mp3
├── dir3
│   ├── Bamboo Flute - Meditation - Healing - Sleep - Zen.mp3
│   └── pic.jpg
└── dir4
    ├── Aaruyirae.mp3
    └── video.mp4

7 directories, 10 files
                    

Enumere el contenido del directorio usando el comando de árbol

Como puede ver en la estructura de directorios anterior, el linux El directorio tiene cuatro subdirectorios, a saber dir1 , dir2 , dir3 y dir4 . los mp3 los archivos están dispersos en los cuatro subdirectorios. Ahora, quiero copiar todo mp3 archivos a otro directorio llamado “ostechnix” y también quiero mantener la misma estructura de directorios en el directorio de destino.

Primero veremos cómo hacer esto usando el comando “buscar”.

Método 1: usar los comandos “buscar” y “cp” o “cpio”

Ir al directorio de origen:

                      $ cd Linux/
                    

Y copie todos los tipos de archivos mp3 usando el comando “buscar”:

                      $ find . -name '*.mp3' -exec cp --parents {} ~/ostechnix ;
                    

Analicemos el comando anterior y veamos qué hace cada opción.

  • encontrar – comando para encontrar archivos y carpetas en sistemas tipo Unix.
  • los punto (.) – representa que copiamos el contenido del directorio actual.
  • -nombre ‘*.mp3’ – busque archivos que coincidan con la extensión .mp3.
  • -cp ejecutivo – ejecute el comando ‘cp’ para copiar archivos del directorio de origen al directorio de destino.
  • –padres – cree los directorios principales intermedios si es necesario para conservar la estructura del directorio principal.
  • {} – se reemplaza automáticamente con el nombre de archivo de los archivos encontrados por el comando ‘buscar’. Y los frenos se escapan para protegerlos de la expansión del shell en algunas versiones del comando “buscar”. También puedes usar {} sin caracteres de escape.
  • ~/ostechnix – directorio de destino para guardar los archivos coincidentes.
  • ; – indica que los comandos a ejecutar ahora están completos, y para ejecutar el comando nuevamente en el próximo partido.

Este comando encontrará y copiará todos los archivos de tipo mp3 del directorio ~/Linux al directorio ~/ostechnix. Y también conserva la misma estructura de directorios en el directorio de destino.

Puede verificarlo usando el comando “árbol” en ambas ubicaciones, como se muestra a continuación.

Enumere los contenidos del directorio usando el comando de árbol en Linux

Como puede ver en el resultado anterior, el directorio de destino solo tiene los archivos mp3 y su estructura de directorio es la misma que la del directorio de origen.

Si está haciendo esto desde alguna otra ubicación, especifique la ruta completa del directorio de origen como se muestra a continuación.

                      $ find ~/Linux -name '*.mp3' -exec cp --parents {} ~/ostechnix ;
                    

Este comando encontrará todo el archivo en Linux/ ubicación y copiarlos en ostechnix/~/Linux/ .

Copie tipos de archivos específicos mientras mantiene la estructura del directorio en Linux

Copie tipos de archivos específicos mientras mantiene la estructura del directorio en Linux

Si –padres opción no funciona, puede combinar el comando de búsqueda con cpio comando para copiar archivos manteniendo la estructura del directorio.

                      $ find . -name '*.mp3' | cpio -pdm  ~/ostechnix
                    

Aquí,

  • cpio – Comando para copiar archivos hacia y desde archivos.
  • -pags – Lea una lista de nombres de archivos de la entrada estándar y cópielos en el directorio especificado.
  • -D – Crear directorios donde sea necesario.
  • -metro – Preservar el tiempo de modificación del archivo.

Para obtener más detalles, consulte las páginas man.

                      $ man find
                    
                      $ man cp
                    
                      $ man cpio
                    

Lectura sugerida:

  • Cómo organizar automáticamente tipos similares de archivos en carpetas específicas

Método 2 – usando Rsync

Rsync es una poderosa herramienta que se utiliza hacia/desde sistemas locales y remotos. Para copiar cierto tipo de archivos de un directorio a otro manteniendo la estructura del directorio principal, ejecute:

                      $ rsync -a -m --include '*/' --include '*.mp3' --exclude '*' ~/Linux/ ~/ostechnix
                    

O,

                      $ rsync -a --prune-empty-dirs --include '*/' --include '*.mp3' --exclude '*' ~/Linux/ ~/ostechnix
                    

Aquí,

  • sincronizar – Herramienta de copia de archivos remota (y local).
  • -a – modo de archivo para conservar casi todo (incluidos enlaces simbólicos, fechas de modificación, permisos de archivos, propietarios, etc.)
  • -m, –prune-empty-dirs – podar los directorios vacíos del árbol de fuentes. Si desea incluir directorios vacíos, simplemente elimine esta opción del comando anterior.
  • –include=”*/” –include=”*.mp3″ –exclude=”*” – Para incluir solo archivos específicos, primero debe incluir esos archivos específicos y luego excluir todos los demás archivos. En nuestro caso, hemos incluido archivos *.mp3 y excluimos todo lo demás.
  • ~/Linux – Directorio de origen.
  • ~/ostechnix – Directorio de destino.

Salida de muestra:

Copie tipos de archivos específicos mientras mantiene la estructura del directorio usando Rsync en Linux

Copie tipos de archivos específicos mientras mantiene la estructura del directorio usando Rsync en Linux

Para obtener más detalles, consulte las páginas man.

                      $ man rsync
                    

Espero que esto ayude.

Related Posts