Rsync двух типов файлов в одной команде?

13

Как записать их в одну строку, также без повторения одного и того же пути?

rsync -a root@somewhere:/folder/remote/*.txt .
rsync -a root@somewhere:/folder/remote/*.jpg .
Cheng
источник

Ответы:

18

Я бы написал это так:

rsync -a root@somewhere:/folder/remote/*.{txt,jpg} .
Герт
источник
7
Это общая техника, которую вы можете использовать с любой командой. Оболочка будет повторять аргумент, заменяя выражение скобками на каждый элемент в списке. Это называется расширение скобки
Шон Дж. Гофф
11
rsync -a --include='*.txt' --include='*.jpg' --exclude='*' root@somewhere:/folder/remote/ .

(Обратите внимание, что заключительный /в /folder/remote/и размещение --exclude='*'после правил включения важны.) В оболочках, которые поддерживают расширение скобок (например, bash, ksh, zsh):

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

Добавьте, --include='*/' --prune-empty-dirsесли вы хотите скопировать файлы в подкаталогах.

Жиль "ТАК - прекрати быть злым"
источник
rsync 3 *, похоже, не работает * с подстановочными знаками, хотя include | exclude работает хорошо.
briankip