在一个命令中rsync两种文件类型?


13

如何将它们写到一行中,而无需重复相同的路径?

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

Answers:


18

我会这样写:

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

7
这是可以与任何命令一起使用的通用技术。Shell将重复该参数,将大括号表达式替换为列表中的每个项目。这就是所谓的支柱expantion
肖恩·戈夫杂志

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

(请注意,final /in /folder/remote/--exclude='*'include规则之后的位置很重要。)在支持括号扩展的shell中(例如bash,ksh,zsh):

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

--include='*/' --prune-empty-dirs如果还要复制子目录中的文件,请添加。


rsync 3 *似乎在*通配符上失败,但是include | exclude效果很好。
briankip
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.