Quero poder pesquisar arquivos com mais de 14 dias e 10k e depois rsync esses arquivos encontrados em um destino.
Existe uma maneira de combinar esses dois comandos?
find ./ -mtime +14 -size +10k
rsync --remove-sent-files -avz /src /dest
Você pode enviar a saída do find para o rsync usando uma das opções descritas abaixo.
Essas 2 opções são muito semelhantes, ambas assumem que você está alterando os diretórios para algum local e executando o find
comando a partir daí.
$ rsync -avz --remove-sent-files \
--files-from=<(find ./ -mtime +14 -size +10k) ./ /dest
Você também pode usar um tubo para alimentar a lista em:
$ find ./ -mtime +14 -size +10k -print0 \
| rsync -av --files-from=- --from0 ./ /dest
Este método pode ser executado de qualquer lugar.
$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
| rsync --files-from=- --from0 /src/dir/ /dst/dir/
printf %P
: Nome do arquivo com o nome do argumento da linha de comando sob o qual foi encontrado removido. Dessa forma, você pode usar qualquer diretório src, sem precisar fazer o cd no diretório src primeiro.