Rsync zwei Dateitypen in einem Befehl?

13

Wie schreibt man diese in eine Zeile, auch ohne den gleichen Pfad zu wiederholen?

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

Antworten:

17

Ich würde es so schreiben:

rsync -a root@somewhere:/folder/remote/*.{txt,jpg} .
Gert
quelle
7
Dies ist eine allgemeine Technik, die Sie mit jedem Befehl verwenden können. Die Shell wiederholt das Argument und ersetzt den Klammerausdruck durch jedes Element in der Liste. Es heißt Klammer Expantion
Shawn J. Goff
11
rsync -a --include='*.txt' --include='*.jpg' --exclude='*' root@somewhere:/folder/remote/ .

(Beachten Sie, dass das endgültige /Einfügen /folder/remote/und die Platzierung --exclude='*'nach den Einschlussregeln wichtig sind.) In Shells, die die Erweiterung von Klammern unterstützen (z. B. bash, ksh, zsh):

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

Hinzufügen, --include='*/' --prune-empty-dirswenn Sie auch Dateien in Unterverzeichnisse kopieren möchten.

Gilles 'SO - hör auf böse zu sein'
quelle
rsync 3 * scheint bei Platzhaltern * zu scheitern, das include | exclude funktioniert aber gut.
Briankip