Je veux pouvoir rechercher des fichiers sur 14 jours et plus de 10k et rsync ces fichiers trouvés vers une destination.
Existe-t-il un moyen de combiner ces deux commandes?
find ./ -mtime +14 -size +10k
rsync --remove-sent-files -avz /src /dest
Vous pouvez envoyer la sortie de find dans rsync en utilisant l'une des options décrites ci-dessous.
Ces 2 options sont très similaires, elles supposent toutes les deux que vous modifiez les répertoires vers un emplacement et que vous exécutez ensuite la find
commande à partir de là.
$ rsync -avz --remove-sent-files \
--files-from=<(find ./ -mtime +14 -size +10k) ./ /dest
Vous pouvez également utiliser un canal pour alimenter la liste en:
$ find ./ -mtime +14 -size +10k -print0 \
| rsync -av --files-from=- --from0 ./ /dest
Cette méthode peut être exécutée de n'importe où.
$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
| rsync --files-from=- --from0 /src/dir/ /dst/dir/
printf %P
: Nom du fichier avec le nom de l'argument de ligne de commande sous lequel il a été trouvé supprimé. De cette façon, vous pouvez utiliser n'importe quel répertoire src, pas besoin de cd dans votre répertoire src d'abord.