Essayez :
find src/ -type f | grep -i so$ | xargs -i cp {} dst
Si vous utilisez Bash, vous pouvez activer le globstar
option shell pour faire correspondre les fichiers et les répertoires de manière récursive :
shopt -s globstar
cp src/**/*.so dst
Si vous avez besoin de trouver des fichiers dont les noms commencent par .
, et/ou des fichiers dans et sous des répertoires dont les noms commencent par .
, définissez le dotglob
option également (par exemple, avec shopt -s dotglob
). Vous pouvez les définir tous les deux en une seule commande :
shopt -s globstar dotglob
J'ai essayé la commande suggérée par Mike :
find src/ -type f | grep -i so$ | xargs -i cp {} dst
mais cela a fini par vider tous les fichiers dans le répertoire dst
avec leurs chemins relatifs perdus.
Pour conserver les chemins relatifs, la commande doit être modifiée comme suit :
find src/ -type f | grep -i so$ | xargs -i cp {} dst/{}