Rsync N derniers fichiers dans un répertoire

Quelle serait la façon la plus simple d'utiliser les nouveaux fichiers ns dans un répertoire vers un serveur distant?

Le moyen le plus simple consiste à exécuter zsh au lieu de bash.

rsync -a -- /path/to/directory/*(om[1,42]) remote-server: 

Dans les parenthèses, les fichiers de commande par temps de modification inverse (c.-à-d. En augmentant l'âge) et [1,42] sélectionnent les 42 premiers matchs.

Si vous souhaitez uniquement des fichiers réguliers et non des répertoires, ajoutez un . Après les parenthèses d'ouverture. Pour plus de possibilités, regardez sous " zshexpn " dans la page de manuel zshexpn .

Si vous souhaitez faire correspondre les fichiers dans l'arborescence du répertoire enracinée dans /path/to/directory , plutôt que juste à l'intérieur de ce répertoire, utilisez /path/to/directory/**/*(.om[1,42]) . Cela enverra tous les fichiers sur le même répertoire sur la cible.

En supposant que vous souhaitez envoyer des fichiers à partir du répertoire de travail actuel:

 rsync `ls -tp | grep -v / | head -n <n>` <destination> <options> 

Fera l'affaire. Par exemple:

 rsync `ls -tp | grep -v / | head -n 10` user@host:/dest/dir/ --progress --compress 

Cela donnera une erreur s'il n'y a pas de fichiers dans le répertoire de travail actuel ou si l'un des fichiers supérieurs contient des espaces ou d'autres caractères spéciaux.

Les «caractères autour de ls -tp | grep -v / | head -n <n> ls -tp | grep -v / | head -n <n> ls -tp | grep -v / | head -n <n> indique à bash d'exécuter les commandes et de les remplacer par la liste de fichiers résultante en tant que liste séparée par espace. L'option -t indique à ls de trier par horodatage, le -p dit d'ajouter un nom de répertoire / après et la partie grep écoute les lignes qui finissent / alors vous ne finissez pas par envoyer des répertoires. Ajoutez -c aux options ls si vous souhaitez que les derniers fichiers soient jugés par le temps de création au lieu de l'heure de modification (bien que certains programmes suppriment et remplacent les fichiers au lieu de les mettre à jour afin que ctime et mtime puissent être identiques même si un fichier Semble avoir été plus long).

Je ne prétends pas que c'est sans aucun doute le moyen le plus simple, mais ce serait comme je le penserais d'abord.