Une autre possibilité, si vous ne voulez pas l'automatiser en un seul script, est d'utiliser votre commande find pour créer un script bash. Ensuite, exécutez le script de bash. De cette façon, vous pouvez également connaître l'origine du fichier.
De plus, je modifierais légèrement ce qui précède au cas où vous auriez des noms de fichiers en double si vous soupçonnez cela dans votre environnement. Vous auriez besoin d'un contrôle d'erreur dans votre script.
Voulez-vous également conserver le chemin du répertoire ?
c'est-à-dire que si un fichier est ici
/source/a/b/c/d/e.jpg
Voulez-vous le copier dans
/dest/a/b/c/d/e.jpg ?
ou
/dest/e.jpg ?
Ainsi, un exemple pourrait être
find /source -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/}' > copy.sh
Cela copierait juste dans un répertoire /backup
Pour préserver, vous pourriez faire
(cd /source; find . -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/"$1}') > copy.sh
Mais alors vous voudriez créer tous les répertoires d'abord.
(cd /source; find . -type d -print | awk '{print "mkdir -p /backup/"$1}' > mkdir.sh
L'avantage de cette méthode est que vous pouvez également examiner les scripts et vous assurer que tout semble correct avant d'exécuter réellement les commandes. Je me suis brûlé plusieurs fois en exécutant la commande avec des résultats ...erm...inattendus :)
De plus, le fait d'avoir le script vous donne également un enregistrement de ce que vous allez faire.