Quiero poder buscar archivos durante 14 días y más de 10k y luego sincronizar esos archivos encontrados a un destino.
¿Hay alguna manera de combinar estos dos comandos?
find ./ -mtime +14 -size +10k
rsync --remove-sent-files -avz /src /dest
Puede enviar la salida de find a rsync utilizando una de las opciones que se detallan a continuación.
Estas 2 opciones son muy similares, ambas suponen que está cambiando los directorios a alguna ubicación y luego ejecuta el find
comando desde allí.
$ rsync -avz --remove-sent-files \
--files-from=<(find ./ -mtime +14 -size +10k) ./ /dest
También puede usar una tubería para alimentar la lista en:
$ find ./ -mtime +14 -size +10k -print0 \
| rsync -av --files-from=- --from0 ./ /dest
Este método se puede ejecutar desde cualquier lugar.
$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
| rsync --files-from=- --from0 /src/dir/ /dst/dir/
printf %P
: Nombre del archivo con el nombre del argumento de la línea de comando bajo el cual se encontró eliminado. De esta manera, puede usar cualquier directorio src, sin necesidad de crear un CD en su directorio src primero.