Al copiar un directorio que contiene directorios (subdirectorios) y otros directorios en archivos, use el comando cp para ejecutar -R
(recursivo) se puede hacer de manera eficiente con una sintaxis de comando simple como se describe a continuación.
$ cp -R path/to/source/directory path/to/destination/directory
Sin embargo, en algunos casos, es posible que desee emular alguna estructura de directorios que ya existe para su proyecto personal o sistema de almacenamiento de archivos, porque esa estructura de directorios tiene mucho sentido y puede llevar mucho tiempo recrearla completamente desde cero.
Este artículo nos guiará a través de una forma eficiente de copiar una estructura de directorio vacía desde un archivo de directorio poblado en Linux.
Tabla de Contenidos
planteamiento del problema
Dado que el objetivo principal de este artículo es replicar con éxito la estructura de directorios de un directorio ya existente y poblado (con subdirectorios), necesitamos nuestro propio directorio poblado como referencia.
Considere la estructura de directorios vista previa por el siguiente comando de árbol de Linux:
$ tree -a dir1
de acuerdo a Árbol Salida de comando, directorio raíz (directorio 1) tiene tres subdirectorios para un total de 10 documento. Nuestro objetivo es copiar este esqueleto de estructura de directorios a un nuevo destino sin los 10 archivos que ya existen.
1. Copie la estructura de directorios de Linux usando los comandos tree y xargs
Ya sabemos Árbol El comando imita un formato similar a un árbol al enumerar el contenido del directorio. por otra parte, xargs El comando toma la entrada estándar del usuario del sistema o la salida de ejecuciones de comandos anteriores para construir y ejecutar una línea de comandos.
Las operaciones relacionadas con la combinación de estos dos comandos son las siguientes:
- Obtenga todas las rutas de directorio de una estructura de directorio existente.
- Redirigir y usar la ruta del directorio recuperado como entrada.
- usar mkdir-p El comando vuelve a crear la ruta del directorio recuperada en la nueva ruta del directorio.
Obtener la ruta del directorio de Linux
hemos admitido Árbol Efectividad de los comandos en la generación de formatos en forma de árbol de estructuras de directorios existentes.Sin embargo, podemos agregar algunas banderas y opciones de comando para garantizar Árbol El comando genera la ruta del directorio sin especificar el archivo del directorio en detalle.
$ tree -dfi --noreport dir1
Nuestra implementación de comando final se verá así:
$ tree -dfi --noreport dir1 | xargs -I{} mkdir -p "$HOME/Downloads/{}"
Ahora usemos Árbol Comando de nuevo para confirmar que la estructura del directorio se copia sin los archivos:
$ tree -a $HOME/Downloads/dir1
Tenemos tres directorios y cero archivos, por lo que nuestro objetivo está logrado.
2. Copie la estructura de directorios de Linux usando los comandos find y xargs
como con Árbol comando, podemos usar el comando de búsqueda para obtener la ruta completa del directorio en la estructura del directorio de destino.
$ find dir1 -type d
Este -type d
notificación de opción Buscar Comando para recuperar directorios solamente.
El comando anterior se puede canalizar a xargs comando con destino (p. ej. $INICIO/ARCHIVOS) se utiliza para crear una estructura de directorios sin archivos.
$ xargs -I{} mkdir -p "$HOME/Documents/{}"
Nuestro comando final se verá así:
$ find dir1 -type d | xargs -I{} mkdir -p "$HOME/Documents/{}"
Confirme la creación de la estructura de directorios:
$ tree -a $HOME/Documents/dir1
O combinar Buscar comando con -exec
Los parámetros producen el mismo resultado:
$ find dir1 -type d -exec mkdir -p "$HOME/Desktop/{}" \;
¿Conoce otras formas geniales de copiar una estructura de directorio sin archivos? Siéntase libre de dejar un comentario o retroalimentación.