Búsqueda de sitios web

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


En esta breve guía, analizaremos cómo copiar un archivo a varios directorios desde la línea de comando usando find, cp, echo, Comandos xargs y tee en Linux.

El otro día quise copiar algunos videos a diferentes carpetas en mi escritorio Arch Linux. Como ya sabe, podemos hacerlo fácilmente haciendo clic derecho en el archivo, seleccionando la opción Copiar del menú contextual y pegándolo en el directorio/carpeta de destino.

Sin embargo, me gustaría saber si hay alguna otra forma de copiar el archivo en varios directorios de una sola vez. Pensé que sería útil cuando quisiera copiar un solo archivo en varios directorios diferentes a la vez. Hice algunas búsquedas en la web y encontré las siguientes soluciones.

Advertencia importante:

Tenga en cuenta que los siguientes comandos no solicitarán ninguna confirmación. Si existe algún archivo con el mismo nombre en el directorio de destino, se reemplazará automáticamente.

Si es nuevo en Linux, le sugiero que pruebe los comandos en cualquier máquina de prueba antes de comenzar a usarlos en producción. De esta manera puede evitar la pérdida innecesaria de datos.

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

Tengo un archivo de texto llamado ostechnix.txt en mi directorio de inicio y quería copiarlo en dos directorios diferentes llamados Descargas<. y Documentos de una sola vez.

Primero, veamos cómo copiar el archivo a varios directorios diferentes usando los comandos find y cp.

Método 1: usar los comandos buscar y cp

Podemos copiar un solo archivo a varios directorios a la vez usando los comandos find y cp.

find es un comando de Unix y Linux para buscar archivos en una jerarquía de directorios y el comando cp se usa para copiar archivos y directorios.

Para copiar un archivo llamado ostechnix.txt a los directorios ~/Downloads y ~/Documents usando find y cp, ejecute:

find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp ostechnix.txt {} \;

Copie un archivo a varios directorios diferentes usando el comando buscar y cp en Linux

El comando anterior copiará el archivo ostechnix.txt en el directorio actual a los directorios ~/Downloads y ~/Documents.

Si no especifica la opción '-max Depth 0', el archivo ostechnix.txt se copiará en  ~/Downloads, ~/Documents y también en sus subdirectorios. Así que no olvides especificarlo.

Como advertí anteriormente, si ya hay algún archivo con el mismo nombre (es decir, ostechnix.txt) en cualquiera de los directorios de destino, el comando anterior simplemente sobrescribirá el archivo existente sin ninguna confirmación.

Si no desea sobrescribir el archivo existente, puede usar el indicador -n con el comando cp como se muestra a continuación:

find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp -n ostechnix.txt {} \;

Ahora, no reemplazará el archivo de destino si ya existe en las ubicaciones de destino.

Método 2: usar los comandos echo, xargs y cp

La otra forma de copiar archivos en varias ubicaciones es mediante el uso de los comandos echo, xargs y cp.

Como ya sabe, el comando cp se usa para copiar archivos y directorios, y el comando xargs se usa para crear y ejecutar líneas de comando desde la entrada estándar.

Para copiar un archivo a varios directorios usando los comandos echo, xargs y cp, ejecute:

echo ~/Downloads ~/Documents | xargs -n 1 cp ostechnix.txt

Copie un archivo a varios directorios usando los comandos cp, echo y xargs en Linux

Analicemos el comando anterior y veamos cómo funciona.

Generalmente, el comando echo imprime la cadena o texto dado en la salida estándar. Pero en este caso, canalizamos la salida del comando echo a xargs. Aquí, el comando echo enviará la ruta del directorio a xargs como entrada.

El comando xargs ejecuta el comando cp dos veces y agrega la ruta de cada directorio al final del comando cp.

El comando xargs recibe dos argumentos (es decir, la ruta del directorio) del comando echo. La opción -n 1 en el comando xargs le dice a xargs que solo agregue uno de esos argumentos a la vez.

Nuevamente, el comando anterior reemplaza el archivo de destino si ya existe. Si no desea reemplazar el archivo de destino, agregue el indicador -n en el comando:

echo ~/Downloads ~/Documents | xargs -n 1 cp -n ostechnix.txt

Método 3: usar el comando tee

Tee es una utilidad de Unix y Linux que se utiliza para leer desde entradas estándar y escribir en archivos y salidas estándar.

Ahora, copiemos el archivo ostechnix.txt en dos directorios diferentes llamados /home/sk/Downloads y / inicio/sk/Documentos.

Para hacerlo, simplemente ejecute el siguiente comando desde la Terminal:

tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt

El comando anterior copiará el archivo ostechnix.txt desde el directorio de inicio al directorio ~/Downloads y ~/Documents.

Tenga en cuenta que el comando tee también escribirá la entrada en la salida estándar. Si no desea que el comando tee haga esto, simplemente redirija la salida estándar a /dev/null como se muestra a continuación.

tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt >/dev/null

Copie un archivo a varios directorios diferentes usando el comando tee en Linux

Nuevamente te lo advierto. Si ya hay algún archivo con el mismo nombre (es decir, ostechnix.txt) en los destinos, el comando anterior sobrescribirá el archivo existente.

Para obtener más información, consulte las páginas de manual de los comandos anteriores:

man cp
man find
man xargs
man echo
man tee

Conclusión

Así es como copiamos un archivo a varios directorios a la vez desde la línea de comandos en Linux. Podría haber otras formas, pero creo que estos comandos son muy simples y fáciles de usar.

Nuevamente, asegúrese de que las rutas de destino sean correctas y, lo más importante, asegúrese de que no exista ningún archivo con el mismo nombre en la ubicación de destino.

Lectura relacionada:

  • Cómo buscar y copiar cierto tipo de archivos de un directorio a otro en Linux
  • Copie tipos de archivos específicos manteniendo la estructura de directorios en Linux
  • Copie archivos y cree directorios de destino al mismo tiempo
  • Cómo copiar archivos y cambiar la propiedad y los permisos al mismo tiempo
  • Cómo mantener intactos la propiedad y los permisos de archivo al copiar archivos o directorios
  • Reanudar archivos parcialmente transferidos a través de SSH usando Rsync
  • Cómo transferir rápidamente archivos grandes a través de la red en Linux y Unix
  • Copia avanzada: agregue barra de progreso a los comandos cp y mv en Linux
  • Copiar el contenido del archivo al portapapeles sin mostrarlo

Artículos relacionados