Talvez seja melhor usar uma ferramenta diferente para encontrar a lista de arquivos e, em seguida, conectá-los ao rsync. Por exemplo:
find /tmp/a -iregex '.*\(jpe?g\|jfif\)' |
rsync -nav --files-from=- / /tmp/b
O -iregex significa ignorar o caso. O padrão regex tem um ^ implícito no início e $ no final. O tipo de regex padrão é emacs , daí a necessidade de barras invertidas.
(Eu deixei um -n no rsync para não copiar nada).
Cuidado, usando --files-from implica -R , o que significa que o caminho completo, por exemplo tmp/a/t.jpg , será copiado para o destino, e é por isso que usei um caminho absoluto no find e como o rsync do diretório ( / ). Isso é apenas para simplificar o teste até você entender qual diretório inicial você precisa fornecer para localizar e rsync.
Por exemplo, para eliminar o prefixo tmp/a , você pode fazer (cd /tmp/a; find . ... ) | rsync ... /tmp/a /tmp/b . O achado gerará t.jpg e o rsync encontrará esse arquivo em /tmp/a e criará o arquivo t.jpg em /tmp/b .