Esta resposta não leva em consideração a restrição "não mais do que 1 dia".
Em vez de tentar analisar a saída de find
, use rsync
diretamente de find
:
find /mnt/IP/ftp/123 -type -name '1[14].*' -prune \
-exec rsync -av \
--include='*.bin' --include='*/' \
--exclude='*' --prune-empty-dirs {} /home/ftp/123 ';'
Isso localizaria os diretórios cujos nomes começam com 11.
ou 14.
em ou abaixo de /mnt/IP/ftp/123
. Para cada diretório, ele removeria o diretório da lista de pesquisa (com -prune
) e executaria
rsync -av --include='*.bin' --include='*/' \
--exclude='*' --prune-empty-dirs {} /home/ftp/123
onde {}
seria substituído pelo nome do caminho do diretório encontrado.
O comando rsync
criaria um subdiretório de /home/ftp/123
com o mesmo nome de arquivo do diretório encontrado (por exemplo, começando com 11.
ou 14.
) e copiando os arquivos .bin
.
Os padrões de inclusão e exclusão usados com rsync
(a primeira partida vence):
-
--include='*.bin'
: inclua qualquer arquivo cujo nome de arquivo termine com.bin
. -
--include='*/'
: inclua qualquer diretório. Os diretórios vazios no destino serão removidos devido a--prune-empty-dirs
. -
--exclude='*'
: exclua qualquer coisa não incluída nas regras anteriores.