Copiar un archivo simultáneamente en varias ubicaciones a través de la línea de comandos de Ubuntu

Como novato en la línea de comandos, es posible que sienta que la misma tarea que solía realizar rápidamente a través de la interfaz gráfica podría requerir muchos comandos en la línea de comandos. Sin embargo, a medida que se convierta lentamente en un usuario avanzado de la línea de comandos a través del aprendizaje, la práctica y la experiencia, comenzará a notar que las mismas tareas se pueden realizar muy rápidamente a través de algunos atajos muy simples pero útiles. En este artículo, describiremos uno de esos casos que aparentemente podría necesitar muchos comandos para ejecutarse, pero en realidad, un comando simple puede realizar la tarea por usted.

A veces, requerimos copiar un solo archivo a múltiples ubicaciones en nuestro sistema. Entonces, ¿eso significa que debemos usar el comando cp varias veces? ¡La respuesta es no! Sigamos leyendo para encontrar una solución.

Los comandos mencionados en este artículo se han ejecutado en un sistema Ubuntu 18.04 LTS.

Cómo copiar un archivo simultáneamente a varias ubicaciones

Todos sabemos cómo el comando cp nos permite copiar un archivo a una nueva ubicación a través de la siguiente sintaxis:

$ cp ~[/location/sourcefile] ~[/destinationfolder]

Aquí estoy copiando un archivo de texto de muestra de mi carpeta Descargas a la carpeta Documentos:

Ahora, si quiero copiar el mismo archivo en dos ubicaciones diferentes en lugar de una, la solución probable parece usar el comando cp dos veces.

Aquí estoy usando el comando cp dos veces para copiar un archivo de texto de muestra de la carpeta Descargas a las carpetas Pública y Escritorio:

Copiar el mismo archivo en dos ubicaciones usando el comando cp dos veces todavía parece lógico, pero supongamos que tenemos que copiar el archivo en tres, cinco o incluso más ubicaciones. Así es como un solo comando puede lograr este propósito.

Sintaxis:

$ echo [destination1] [desctination2] [destiantion3]..... | xargs -n 1 cp [/location/sourcefile]

En el siguiente example, Usaré este comando para copiar un archivo de texto de muestra de mi carpeta de Descargas a tres carpetas diferentes simultáneamente:

Hemos utilizado el comando echo y el comando xargs en una línea para lograr nuestro propósito.

¿Cómo funciona el comando?

El comando echo imprime la salida en la pantalla pero en nuestro example, lo estamos usando para enviar salida al comando xargs a través de | símbolo. El comando xargs tomará la entrada tres veces del comando echo y realizará la operación cp tres veces, copiando el texto de muestra en tres ubicaciones diferentes. La cuenta n le dice al comando cp que tome un argumento a la vez.

Tenga en cuenta que este comando sobrescribirá un archivo ya existente con el mismo nombre en la carpeta de destino. Por lo tanto, es una buena práctica realizar siempre una copia de seguridad de sus archivos importantes. La opción i que usamos para preguntar antes de la operación de sobrescritura no funciona con el comando xargs.

Sin embargo, hay un uso del comando que puede ayudarlo a evitar sobrescribir un archivo si ya existe en la carpeta de destino; la opción n antes del archivo fuente.

Sintaxis:

$ echo [destination1] [desctination2] [destiantion3]..... | xargs -n 1 cp n [/lcoation/sourcefile]

Ejemplo:

La opción n es muy útil al copiar archivos muy grandes de una ubicación a otra, especialmente a través de una red. De esta manera, puede evitar el desperdicio de recursos al copiar y luego reemplazar un archivo ya existente.

Después de ejecutar este tutorial, estará un paso más cerca de convertirse en un gurú de la línea de comandos. Ahora no necesita escribir varios comandos para realizar la simple tarea de copiar un archivo en diferentes ubicaciones. Puede fusionar el comando echo y xargs, como describimos, para tener una solución de un solo comando para su problema.