Página principal » cómo » Cómo copiar un archivo a varios directorios con un comando en Linux

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

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

    Normalmente, para copiar un archivo, usaría el cp comando, enlazando al archivo fuente y al directorio de destino:

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

    Para copiarlo en dos directorios más, muchas personas simplemente ejecutarán el comando dos veces más, 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 archivo cp1

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

    Entonces, para seguir con nuestro ejemplo de antes, los tres cp Los comandos 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 se usa el cp Para copiar un archivo en una sola ubicación, puede agregar el -yo Opción de preguntar si desea reemplazar un archivo existente. sin embargo, el -yo La opción es una opción interactiva (hace que el cp comando para solicitar la entrada del usuario) y no puede utilizar una opción interactiva con el cp comando cuando se usa junto con xargs .)

    Otra cosa a considerar, es que si está copiando un archivo muy grande, es posible que desee agregar el no-clobber ( -norte ) opción a la cp comando en el comando único arriba. 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 a través de una red, es posible que sea lento y que desee evitar el uso de los recursos necesarios para copiar y reemplazar el archivo. El siguiente comando agrega el -norte Opción, y no copiará el archivo a ningún destino listado en los argumentos a la declaració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 comando en Linux para obtener más información sobre cualquiera de estos comandos.