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
.