
En la gestión de archivos de Linux, la flexibilidad es clave. Cuando se trata de una sola copia de un archivo requerido en varios destinos de directorio, no queremos perder demasiado tiempo reinventando la ruta del directorio de destino hasta que todas las rutas del directorio de destino tengan la copia esperada del archivo.
Para operaciones estándar de copia de archivos/directorios, utilice el comando cp de Linux.
Este tutorial nos guía a través de varios métodos basados en Linux para copiar un solo archivo en varias ubicaciones de directorio en Linux.
planteamiento del problema
Para que este tutorial sea interesante, crearemos un archivo aleatorio y algunos directorios aleatorios a los que se enviarán copias del archivo creado.
$ touch to_be_copied.txt
En cuanto a los directorios aleatorios, crearemos tres directorios aleatorios (Directorio 1, Directorio 2y catálogo 3) en tres lugares diferentes.
$ mkdir dir1 /home/dnyce/Downloads/dir2 /home/dnyce/Documents/dir3
Ahora podemos comenzar a trabajar en formas de copiar un solo archivo en estos tres directorios sobre la marcha.
1. Use el bucle de shell y el comando cp
Considere la siguiente implementación de bucle de shell para copiar el único archivo que creamos en tres directorios.
$ for i in /home/dnyce/dir1 /home/dnyce/Downloads/dir2 /home/dnyce/Documents/dir3; do cp to_be_copied.txt ${i}/; done
Asegúrese de especificar la ruta absoluta al directorio de destino.
En el bucle de shell anterior, los tres directorios se asignan a variables i
Antes do
Ejecute la declaración para copiar nuestros archivos a estos tres directorios.
Confirme que los archivos se han copiado en los tres directorios.
$ ls -l dir1 $ ls -l /home/dnyce/Downloads/dir2 $ ls -l /home/dnyce/Documents/dir3

2. Usa los comandos find y cp
De forma predeterminada, el comando de búsqueda de Linux es eficaz para consultar la probabilidad de que exista un archivo en una jerarquía de directorios.
podemos lograr Buscar y c.p. Comando de la siguiente manera:
$ find /home/dnyce/dir1 /home/dnyce/Downloads/dir2 /home/dnyce/Documents/dir3 -maxdepth 0 -type d -exec cp to_be_copied.txt {} \;
Se sobrescribirán todos los archivos existentes con nombres similares en el directorio de destino.
- – profundidad máxima se establece en así que esto Buscar El comando no expande su búsqueda a los subdirectorios existentes, si los hay.
- -Tipo d Especifica que estamos tratando con un directorio.
- -implementar implementar c.p. El comando copia nuestros archivos al directorio buscado y encontrado.
3. Uso de los comandos echo, xargs y cp
Este xargs El comando hará referencia a la salida estándar antes de construir y ejecutar la línea de comando asociada. En cuanto al comando echo, lo usaremos para identificar la ubicación del directorio donde se enviará nuestra única copia del archivo.
La implementación de los tres comandos anteriores es la siguiente:
$ echo /home/dnyce/dir1 /home/dnyce/Downloads/dir2 /home/dnyce/Documents/dir3 | xargs -n 1 cp to_be_copied.txt
Este eco Los comandos se canalizan a xargs Comandos que toman una ruta de directorio como argumento y agregan uno por uno (-n 1)
.
4. Usa el comando tee
básicamente, servir orden Tome la entrada lógicamente válida de la entrada estándar y escriba el resultado en un archivo y/o salida estándar. En nuestro caso se implementa de la siguiente manera:
$ tee /home/dnyce/dir1/to_be_copied.txt /home/dnyce/Downloads/dir2/to_be_copied.txt /home/dnyce/Documents/dir3/to_be_copied.txt < to_be_copied.txt
Como habrá notado, hemos especificado el nombre del archivo que se copiará en el directorio de destino, porque tee El comando no toma un nombre de directorio como argumento.
¿Conoce otras formas geniales de copiar archivos a varios directorios en Linux? No dudes en dejar un comentario o feedback.