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 .

Antworten:


17

Ich würde es so schreiben:

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

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.


rsync 3 * scheint bei Platzhaltern * zu scheitern, das include | exclude funktioniert aber gut.
Briankip
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.