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.
Tabla de Contenidos
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 ;
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
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
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.