Sincronizzare due tipi di file in un comando?


13

Come scrivere quelli in una riga, anche senza ripetere lo stesso percorso?

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

Risposte:


18

Lo scriverei così:

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

7
Questa è una tecnica generale che puoi usare con qualsiasi comando. La shell ripeterà l'argomento, sostituendo l'espressione di parentesi graffa con ciascun elemento nell'elenco. Si chiama " parentesi graffa"
Shawn J. Goff del

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

(Si noti che il finale /in /folder/remote/e il posizionamento di --exclude='*'dopo le regole include sono importanti.) Nelle shell che supportano l'espansione del controvento (ad es. Bash, ksh, zsh):

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

Aggiungi --include='*/' --prune-empty-dirsse vuoi copiare anche i file nelle sottodirectory.


rsync 3 * sembra fallire su * caratteri jolly, tuttavia l'inclusione | exclude funziona bene.
briankip,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.