28Jun

Cómo copiar un archivo a múltiples directorios con un comando en Linux

click fraud protection

Copiar un archivo con la línea de comandos de Linux es fácil. Sin embargo, ¿qué sucede si quiere copiar el mismo archivo en varias ubicaciones diferentes? Eso también es fácil, y le mostraremos cómo hacerlo con un comando.

Normalmente, para copiar un archivo, debe usar el comando cp, que lo vincula al archivo de origen y al directorio de destino:

cp ~ /Documents/ FileToBeCopied.txt ~ /TextFiles/

Para copiarlo en dos directorios más, muchas personas simplemente ejecutarían el comando dosmás veces, con diferentes destinos:

cp ~ /Documents/ FileToBeCopied.txt ~ /Dropbox/ cp ~ /Documents/ FileToBeCopied.txt /media/lori/MYUSBDRIVE/

Sin embargo, podemos hacer la misma tarea con un comando:

echo dir1 dir2 dir3 |xargs -n 1 cp file1

Así es como funciona este comando. El comando de eco normalmente escribe en la pantalla. Sin embargo, en este caso, queremos alimentar la salida del comando echo como entrada al comando xargs. Para hacer esto, usamos el símbolo de tubería( |) que alimenta la salida de un comando como entrada a otro. El comando xargs ejecutará el comando cp tres veces, cada vez añadiendo la siguiente ruta de directorio conectada desde el comando echo hasta el final del comando cp. Hay tres argumentos que se pasan a xargs, pero la opción -n 1 en el comando xargs le dice que solo añada uno de esos argumentos a la vez al comando cp cada vez que se ejecuta.

instagram viewer

Entonces, para seguir con nuestro ejemplo anterior, los tres comandos separados de cp anteriores se pueden combinar en un comando como este:

echo ~ /TextFiles/ ~ / Dropbox /media/lori/ MYUSBDRIVE |xargs -n 1 cp ~ /Documents/ FileToBeCopied.txt

Tenga en cuenta que si el archivo que se está copiando existe en cualquiera de los directorios de destino especificados, el archivo en ese destino se reemplazará automáticamente. No se le preguntará si desea reemplazar el archivo.(Normalmente, cuando utiliza el comando cp para copiar un archivo en una sola ubicación, puede agregar la opción -i para preguntar si desea reemplazar un archivo existente. Sin embargo, la opción -i es una opción interactiva( causa elcomando cp para solicitar la opinión del usuario) y no se puede usar una opción interactiva con el comando cp cuando se usa junto con xargs.)

Otra cosa a considerar, es que si está copiando un archivo muy grande, es posible quedesea agregar la opción no-clobber( -n) al comando cp en el único comando anterior. Esta opción evita automáticamente que un archivo se sobrescriba en un destino si ya existe allí.Si está copiando un archivo muy grande en una red, puede ser lento y es posible que desee evitar el uso de los recursos necesarios para copiar y reemplazar el archivo. El siguiente comando agrega la opción -n y no copiará el archivo a ningún destino enumerado en los argumentos a la instrucción echo, si el archivo ya existe en ese destino.

echo ~ /TextFiles/ ~ / Dropbox /media/lori/ MYUSBDRIVE |xargs -n 1 cp -n ~ /Documents/ FileToBeCopied.txt

Escriba man echo, man xargs o man cp en la línea de comandos en Linux para obtener más información acerca de cualquiera de estos comandos.