Rsync deux types de fichiers en une seule commande?


13

Comment les écrire sur une seule ligne, sans répéter le même chemin?

rsync -a root@somewhere:/folder/remote/*.txt .
rsync -a root@somewhere:/folder/remote/*.jpg .

Réponses:


18

Je l'écrirais comme ceci:

rsync -a root@somewhere:/folder/remote/*.{txt,jpg} .

7
Il s'agit d'une technique générale que vous pouvez utiliser avec n'importe quelle commande. Le shell répète l'argument en remplaçant l'expression d'accolade par chaque élément de la liste. C'est ce qu'on appelle l' accolade
Shawn J. Goff

11
rsync -a --include='*.txt' --include='*.jpg' --exclude='*' root@somewhere:/folder/remote/ .

(Notez que la finale /dans /folder/remote/et le placement --exclude='*'après les règles d'inclusion sont importants.) Dans les shells qui prennent en charge l'expansion des accolades (par exemple bash, ksh, zsh):

rsync -a --include='*.'{txt,jpg} --exclude='*' root@somewhere:/folder/remote/ .

Ajoutez --include='*/' --prune-empty-dirssi vous souhaitez également copier des fichiers dans des sous-répertoires.


rsync 3 * semble échouer sur les caractères génériques *, l'inclusion | exclure fonctionne bien.
briankip
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.