Tengo la siguiente estructura de directorios.
dirA/[archivoA, algúnB, barraC, archivoD, algúnE, barraF] dirB/[archivoA, barraC, algúnE]
Quiero copiar sólo archivos de dirA a dirB que ya están presentes en dirB. ¿Cómo hago esta copia selectiva?
Respuesta1
Por ejemplo, podría utilizar el comando buscar con la opción -exec. Probablemente usarías alguna sintaxis como la siguiente (debe ejecutarse en dirB y ten en cuenta que es recursiva):
find ./ -type f -exec cp '../dirA/{}' ./ \;
El -tipo f le dice a Find que solo tenga en cuenta archivos normales, el -exec dice: ejecute el siguiente comando en cada archivo. El \; al final finaliza el comando que se va a ejecutar. El {} es un marcador de posición que se reemplaza por el nombre de archivo real mediante búsqueda. Consulte la página de manual de find para obtener detalles y otros ejemplos de uso.
Esto es lo que sucede en mi PC:
desktop:~$ mkdir dirA
desktop:~$ mkdir dirB
desktop:~$ cd dirA
desktop:~/dirA$ touch foo bar this
desktop:~/dirA$ cd ..
desktop:~$ cd dirB
desktop:~/dirB$ touch bar this
desktop:~/dirB$ find ./ -type f -exec cp -v '../dirA/{}' ./ \;
»../dirA/./this“ -> »./this“
»../dirA/./bar“ -> »./bar“