Zsynchronizować dwa typy plików w jednym poleceniu?


13

Jak zapisać je w jednym wierszu, również bez powtarzania tej samej ścieżki?

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

Odpowiedzi:


18

Napisałbym tak:

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

7
Jest to ogólna technika, której można używać z dowolnym poleceniem. Powłoka powtórzy argument, zastępując wyrażenie nawiasu klamrowego każdym elementem na liście. Nazywa się to ekspansją nawiasów klamrowych
Shawn J. Goff,

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

(Należy pamiętać, że ostatecznym /IN /folder/remote/i umieszczenia --exclude='*'po to zasady są ważne). W muszli że ekspansja wsparcie mocujący (np bash, ksh, zsh):

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

Dodaj, --include='*/' --prune-empty-dirsjeśli chcesz również skopiować pliki do podkatalogów.


rsync 3 * wydaje się nie działać na * znakach wieloznacznych, ale włączanie | wykluczanie działa dobrze.
briankip
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.