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