GNU/Linux >> Tutoriales Linux >  >> Linux

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 manteniendo la estructura de directorios 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 los contenidos del directorio usando el comando de árbol

Como puede ver en la estructura de directorios anterior, Linux El directorio tiene cuatro subdirectorios, a saber, dir1 , dir2 , dir3 y dir4 . El mp3 los archivos están dispersos en los cuatro subdirectorios. Ahora, quiero copiar todos los 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"

Vaya 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.

  • buscar – comando para encontrar archivos y carpetas en sistemas tipo Unix.
  • el 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 preservar la estructura del directorio principal.
  • \{\} – se reemplaza automáticamente con el nombre de archivo de los archivos encontrados por el comando 'buscar'. Y las llaves se escapan para protegerlas de la expansión del shell en algunas versiones del comando "buscar". También puede 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 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/ y cópielos en ostechnix/~/Linux/ .

Copie tipos de archivos específicos manteniendo la estructura de directorios en Linux

Si --padres la 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.
  • -p - Lea una lista de nombres de archivos de la entrada estándar y cópielos en el directorio especificado.
  • -d - Cree directorios donde sea necesario.
  • -m - 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 de archivos similares en carpetas específicas

Método 2:usar 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í,

  • rsync - 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

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

$ man rsync

Espero que esto ayude.


Linux
  1. Linux:¿cómo se inspecciona la información de la estructura del directorio de un archivo Unix/linux?

  2. Cómo copiar un directorio en la línea de comandos de Linux [Consejo para principiantes]

  3. Comando cp de linux

  4. 6 ejemplos de comandos mv para mover o renombrar archivos y directorios de Linux

  5. comando de linux para vaciar todos los archivos de un directorio

Comando Cp en Linux (Copiar archivos)

Comando Du en Linux

Comando mv en Linux

Cómo ver la estructura del árbol de directorios en Linux

Copie un archivo a varios directorios desde la línea de comandos en Linux

Cómo tar tipos de archivos específicos (extensiones) en un directorio