Prueba:
find src/ -type f | grep -i so$ | xargs -i cp {} dst
Si está utilizando Bash, puede activar el globstar opción de shell para hacer coincidir archivos y directorios recursivamente:
shopt -s globstar
cp src/**/*.so dst
Si necesita encontrar archivos cuyos nombres comiencen con . y/o archivos en y bajo directorios cuyos nombres comienzan con . , establece el dotglob opción también (por ejemplo, con shopt -s dotglob ). Puede configurar ambos en un solo comando:
shopt -s globstar dotglob
Probé el comando sugerido por Mike:
find src/ -type f | grep -i so$ | xargs -i cp {} dst
pero terminó volcando todos los archivos en el directorio dst con sus caminos relativos perdidos.
Para mantener las rutas relativas, el comando debe modificarse a esto:
find src/ -type f | grep -i so$ | xargs -i cp {} dst/{}