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

Che*_*eng 14 shell rsync

如何将它们写成一行,也不重复相同的路径?

rsync -a root@somewhere:/folder/remote/*.txt .
rsync -a root@somewhere:/folder/remote/*.jpg .
Run Code Online (Sandbox Code Playgroud)

Ger*_*ert 19

我会这样写:

rsync -a root@somewhere:/folder/remote/*.{txt,jpg} .
Run Code Online (Sandbox Code Playgroud)

  • 这是您可以与任何命令一起使用的通用技术。shell 将重复参数,用列表中的每个项目替换括号表达式。它被称为 [支撑扩展](http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion) (8认同)

Gil*_*il' 14

rsync -a --include='*.txt' --include='*.jpg' --exclude='*' root@somewhere:/folder/remote/ .
Run Code Online (Sandbox Code Playgroud)

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

rsync -a --include='*.'{txt,jpg} --exclude='*' root@somewhere:/folder/remote/ .
Run Code Online (Sandbox Code Playgroud)

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