GNU/Linux >> Tutoriales Linux >  >> Linux

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

En esta breve guía, discutiremos cómo copiar un archivo a múltiples directorios desde la línea de comando usando find , cp , echo , xargs y tee comandos en Linux.

El otro día quería copiar algunos videos a diferentes carpetas en mi escritorio Arch Linux. Como ya sabes, podemos hacerlo fácilmente haciendo clic derecho en el archivo, seleccionando Copy del menú contextual y péguelo 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 quiero 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 la producción. De esta manera puede evitar la pérdida innecesaria de datos.

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

Tengo un archivo de texto llamado ostechnix.txt en mi directorio de inicio, y quería copiarlo en dos directorios diferentes llamados Downloads y Documents de una vez.

Primero, veamos cómo copiar el archivo a múltiples directorios diferentes usando find y cp comandos.

Método 1:usar los comandos find y cp

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

El 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 ~/Downloads y ~/Documents directorios usando find y cp comando, ejecutar:

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

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

Si no especifica '-maxdepth 0' opción, el ostechnix.txt el archivo se copiará en  ~/Downloads , ~/Documents directorios y también en sus subdirectorios también. Por lo tanto, no olvide especificarlo.

Como advertí anteriormente, si ya existe 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 -n marcar con cp comando como 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:Uso de los comandos echo, xargs y cp

La otra forma de copiar archivos a varias ubicaciones es usando echo , xargs y cp comandos.

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

Para copiar un archivo a múltiples directorios usando echo , xargs y cp comandos, ejecute:

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

Analicemos el comando anterior y veamos cómo funciona.

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

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

Los xargs commands recibe dos argumentos (es decir, la ruta del directorio) de echo dominio. El -n 1 opción en xargs comando le dice a los xargs para agregar solo 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 -n bandera 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 la entrada estándar y escribir en la salida y los archivos estándar.

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

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 ostechnix.txt archivo del directorio de inicio a ~/Downloads y ~/Documents directorio.

Tenga en cuenta que tee El comando también escribirá la entrada en la salida estándar. Si no quieres tee comando para hacer 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

Nuevamente te advierto. Si ya existe 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 que es 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 encontrar 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 los permisos de propiedad y archivo al copiar archivos o directorios
  • Reanudar archivos transferidos parcialmente a través de SSH mediante Rsync
  • Cómo transferir rápidamente archivos grandes a través de la red en Linux y Unix
  • Copia avanzada:agregar barra de progreso a los comandos cp y mv en Linux
  • Copiar el contenido del archivo en el portapapeles sin mostrarlo

Linux
  1. Copie y pegue en la línea de comandos de Linux con xclip

  2. Cómo eliminar archivos y directorios en Linux desde la línea de comandos

  3. Copiar archivos y directorios en Linux

  4. Buscar torrents desde la línea de comandos en Linux

  5. ¿Cómo puedo copiar una carpeta desde la línea de comandos de Linux?

Cómo extraer o descomprimir archivos tar.gz desde la línea de comandos de Linux

Cómo copiar un archivo a varios directorios en Linux

Comando Ls en Linux (Lista de archivos y directorios)

Comando Cp en Linux (Copiar archivos)

Comando Diff en Linux con ejemplos

Cómo copiar un archivo con un comando a varios directorios en Linux