如何在rsync exclude字段匹配指定字符或空值?简化排除命令
rsync 合并排除规则的正确写法
要合并原有的两条排除规则,同时避免误匹配wtrash这类无关路径,你可以利用rsync支持的扩展glob语法,通过@(pattern1|pattern2)结构匹配两种目标模式:
rsync --exclude '@(.[tT]rash*|[tT]rash*)/*' <omissis>
说明:
@(.[tT]rash*|[tT]rash*)表示匹配两种路径前缀中的任意一种:.[tT]rash*:匹配以.开头、后跟大小写Trash开头的目录[tT]rash*:匹配直接以大小写Trash开头的目录
- 后缀
/*表示排除这些目录下的所有内容,和原规则的逻辑完全一致 - 用单引号包裹模式,避免shell提前解析扩展语法,确保rsync能正确识别
如果你的shell默认未开启扩展glob支持(比如bash),可以先执行shopt -s extglob再运行rsync命令,不过rsync本身也能直接解析这种模式。
内容的提问来源于stack exchange,提问作者Antonio Rizzo
相关产品推荐
相关产品推荐

