Tutoriales

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

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

El otro día quise copiar algunos videos a diferentes carpetas en mi escritorio Arch Linux. Como ya sabe, podemos hacer esto muy fácilmente haciendo clic derecho en el archivo y seleccionándolo Copy Opción del menú contextual y péguela en el directorio / carpeta de destino.

Sin embargo, me gustaría saber si hay otra forma de copiar el archivo en varios directorios. un intento. Pensé que ayudaría si quisiera copiar un solo archivo en varios directorios diferentes al mismo tiempo. Hice un par de búsquedas en la web y encontré las siguientes soluciones.

Advertencia importante:

Tenga en cuenta que los siguientes comandos no requieren confirmación. Si hay un archivo con el mismo nombre en el directorio de destino, se reemplazará automáticamente.

Si es nuevo en Linux, le recomiendo probar los comandos en todas las máquinas de prueba antes de usarlos en producción. De esta forma puede evitar pérdidas de datos innecesarias.

Copie 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 que estuviera en dos directorios diferentes con el nombre. Copiar Downloads y Documents En seguida.

Primero, veamos cómo obtener el archivo usando. Copiar a varios directorios diferentes find y cp Comandos.

Método 1: usar los comandos find y cp

Podemos copiar un solo archivo a varios directorios al mismo tiempo con find y cp Comandos.

La 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.

Cómo copiar un archivo llamado ostechnix.txt a ~/Downloads y ~/Documents Directorios con find y cp Ejecutar orden:

$ find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp ostechnix.txt  ;
Usando los comandos find y cp en Linux, copie un archivo en varios directorios diferentes

El comando anterior copia el archivo ostechnix.txt en el directorio actual en el ~/Downloads y ~/Documents Directorios.

Si no especifica '-maxdepth 0' Opción que ostechnix.txt El archivo se copia a ~/Downloads, ~/Documents Directorios y también en sus subdirectorios. Así que no olvide decirlo.

Como ya advertí, si ya existe un archivo con el mismo nombre (p. Ej. ostechnix.txt) en uno de los directorios de destino, el comando anterior simplemente sobrescribe el archivo existente sin confirmación.

Si no desea sobrescribir el archivo existente, puede -n Bandera con cp Comando de la siguiente manera:

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

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

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

Otra forma de copiar archivos en varias ubicaciones es utilizar 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 crear y ejecutar líneas de comando desde la entrada estándar.

Cómo copiar un archivo en varios directorios con echo, xargs y cp Ejecutar comandos:

$ echo ~/Downloads ~/Documents | xargs -n 1 cp ostechnix.txt
Copie un archivo en varios directorios usando los comandos cp, echo y xargs en Linux
Copie un archivo en varios directorios usando los comandos cp, echo y xargs en Linux

Analicemos el comando anterior y veamos cómo funciona.

Generalmente el echo El comando imprime la cadena o el texto especificado en la salida estándar. Pero en este caso estamos dirigiendo la salida del echo Comando para xargs. Aquí, echo El comando envía la ruta del directorio a xargs como entrada.

xargs El comando ejecuta el cp Comando dos veces y agregue la ruta de cada directorio al final de la cp Mando.

La xargs Los comandos toman dos argumentos (es decir, la ruta del directorio) de echo Mando. La -n 1 Opción en el xargs El comando dice que xargs siempre agregue solo uno de estos argumentos.

Nuevamente, el comando anterior reemplaza el archivo de destino si ya existe. Si no desea reemplazar el archivo de destino, agregue -n Marcar 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 para leer entradas estándar y escribir en archivos y salidas estándar.

Ahora copiemos eso ostechnix.txt Archivo en dos directorios diferentes llamados /home/sk/Downloads y /home/sk/Documents.

Para hacer esto, simplemente ejecute el siguiente comando en la terminal:

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

El comando anterior copia el ostechnix.txt Archivo del directorio de inicio ~/Downloads y ~/Documents Directorio.

Tenga en cuenta que tee El comando también escribe la entrada en la salida estándar. Si tu no quieres tee El comando para hacer esto solo redirige la salida estándar /dev/null Como se muestra abajo.

$ tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt >/dev/null
Copie un archivo en varios directorios diferentes usando el comando tee en Linux
Copie un archivo a varios directorios diferentes con el comando tee en Linux

Te lo advierto de nuevo. Si ya existe un archivo con el mismo nombre (p. Ej. ostechnix.txt) en los destinos, el comando anterior sobrescribirá el archivo existente.

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

$ man cp
$ man find
$ man xargs
$ man echo
$ man tee

Conclusión

Así es como copiamos un archivo desde la línea de comandos en Linux a varios directorios a la vez. 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 haya ningún archivo con el mismo nombre en el destino.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba