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


13

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

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

Ответы:


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.