Isto executa o cp para cada arquivo, por isso pode ser visivelmente mais lento se houver muitos arquivos pequenos (mas não com imagens típicas):
find project -name \*.jpg -exec cp {} assets \;
Isso leva vários argumentos por vez:
find project -name \*.jpg -print0 | xargs -0 -I% cp % assets
Sem nomes de arquivos -0 que contenham aspas simples ou aspas duplas resultariam em um erro como xargs: unterminated quote
.
Bash 4 suporta **
com shopt -s globstar
:
cp project/**/*.jpg assets