Quiero encontrar todos los archivos que dir1
tengan los mismos nombres de archivo correspondientes dir2
y reemplazarlos con los archivos de dir2
.
Por ejemplo:
dir1: first.txt second.txt
dir2: third.txt first.txt
Así que quiero eliminarlo del archivo dir1
antiguo first.txt
y reemplazarlo first.txt
con dir2
.
¿Cómo lograr esto usando la terminal Bash?
Respuesta1
En realidad, hay un único comando que hace exactamente lo que estás pidiendo.
rsync -av --existing dir2/ dir1/
Esto copiará recursivamente los archivos de dir2 a dir1 solo si el archivo ya existe en dir1.
Las -av
opciones son las opciones que normalmente usarás para copiar archivos usando rsync.
La --existing
opción indica rsync
que se omita la creación de nuevos archivos en el receptor.
Debe tener la barra diagonal final en dir2/ en la línea de comando porque rsync
se comporta de manera diferente a la mayoría de los comandos en la barra diagonal y tiene un significado para rsync.
rsync
También se puede utilizar a través de la red de forma similar a scp
.
rsync
puede manejar muchos otros tipos de tareas de sincronización, actualización y copia de seguridad de archivos.
Respuesta2
rsync puede hacer esto con la --existing
opción:
rsync -v --existing dir2/* dir1/