You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用Rsync仅复制匹配*000.csv模式文件的问题

解决rsync仅复制特定模式文件的问题

嘿,我完全懂你这种“明明逻辑对但就是跑不对”的抓狂!rsync的包含/排除规则确实有点反常识,我之前也在这上面踩过坑,给你捋捋怎么搞定这个需求。

为什么之前的方法失效?

你提到的“先排除所有再包含目标”思路是对的,但漏了关键一步:rsync默认会跳过未被明确包含的目录,如果目录都被排除了,它根本不会进去看里面的文件。所以必须先确保所有子目录都被包含,才能让rsync遍历到里面的*000.csv。

正确的rsync命令

直接用这条命令就能精准复制所有子目录里的*000.csv文件:

rsync -av --include='*/' --exclude='*' --include='*000.csv' /你的源目录路径/ /你的目标目录路径/

逐个参数解释

  • -av:a是归档模式,会保留文件权限、时间戳等元数据;v是详细输出,方便你查看哪些文件被复制了,排查问题更方便。
  • --include='*/':先把所有层级的子目录都包含进来,让rsync能遍历到每个目录里的文件。
  • --exclude='*':排除所有未被后续规则包含的文件,这一步是“兜底”,确保只留下我们要的文件。
  • --include='*000.csv':最后明确包含所有匹配*000.csv的文件,这条规则会覆盖前面的排除规则。

注意事项

  • 源目录路径末尾的斜杠/很重要!如果不加,rsync会把源目录本身复制到目标目录里,而不是目录里的内容。比如/source和/source/的效果是不一样的。
  • 如果你的*000.csv文件只在特定层级的目录里,还可以调整--include='*/'的规则,比如用--include='dir*/'只包含以dir开头的目录,但你的需求是所有子目录,所以原命令完全适用。

举个实际例子,如果你的源目录结构是这样:

my_source/
├── sales/
│   ├── jan000.csv
│   └── jan123.csv
├── logs/
│   ├── 2024/
│   │   └── error000.csv
│   └── access.log
└── report000.csv

运行命令后,会复制jan000.csv、error000.csv和report000.csv,其他文件都会被排除,完美符合你的需求!

内容的提问来源于stack exchange,提问作者Jon Deaton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:22:41