Cómo copiar un archivo a varias carpetas o directorios

Cómo copiar un archivo a varias carpetas o directorios.

Una de las tareas más comunes es copiar archivos a una carpeta o directorio. A estas alturas, más o menos todos sabemos como hacerlo; usamos el comando cp.

cp imagen.png /destino/

cp imagen1.png imagen2.png /destino/

Pero que ocurre si queremos copiar un archivo a varios directorios?, pues absolutamente nada porque el comando cp no permite esa operación. En el articulo de hoy vemos otras alternativas al comando cp que nos permiten copiar un archivo a varias carpetas o directorios.

 

Cómo copiar un archivo a varias carpetas

Vemos varias formas de lograr nuestro propósito, comenzamos con xargs que tal vez sea el más engorroso, y continuaremos con otros comandos más simples.

Copiar un archivo con xargs

Si utilizas xargs debes tener en cuenta que hay que incluir opciones y el comando cp.

  • -n 1 : indica a xargs que debe usar un argumento por línea de comando, y volver al comando cp.
  • cp : comando cp.
  • -v : si quieres el modo detallado (opcional)

Vemos un ejemplo de uso:

echo directorio1 directorio2 directorio3 | xargs -n 1 cp archivo.txt

 
Copiar un archivo con find

Otra excelente alternativa que nos permite copiar un archivo a varios directorios, es el comando find.

find directorio1 directorio2 -exec cp archivo.txt {} \;

Si el directorio de destino contiene subdirectorios, debes asegurarte que el archivo no se copie en ellos, para ello usamos «-maxdepth 0».
find directorio1 directorio2 -maxdepth 0 -exec cp archivo.txt {} \;

 
Copiar un archivo con loop en shell

Otra solución interesante para usuarios avanzados es con loop (bucle) en shell.

for dir in *; do [ -d “$dir” ] && cp /full_path/imagen.png “$dir” ; done

La ejecución anterior copiará el archivo /full_path/imagen.png en todos los directorios de la ruta indicada, o en la ubicación actual.

 

Copiar un archivo con GNU parallel

GNU parallel es una herramienta shell (poco conocida), que ejecuta trabajos en paralelo en uno o varios sistemas unix.

Entre los múltiples usos del comando, uno de ellos es dividir la entrada y canalizarla como comandos en paralelo. Dicho esto podemos utilizar parallel para multiplicar el comando cp.

parallel cp -v /ruta/archivo.txt ::: /directorio1/, /directorio2/, /directorio3/

 
Copiar un archivo con tee

El comando tee también nos permite copiar un archivo a múltiples destinos. Vemos un ejemplo.

tee ~/directorio1/archivo.txt ~/directorio2/archivo.txt < ~/archivo.txt

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.

 

Agregar comentario