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

如何用Rsync对比两个目录仅列出有差异的文件?

解决rsync只显示差异文件而非所有目录的问题

我之前也碰到过一模一样的情况!你当前用的rsync -avcn folder1/* folder2/命令里,-v(详细输出)参数会把rsync遍历到的所有目录都打印出来,再加上-a(归档模式)自带的递归特性,就导致结果里混了一堆无关的目录行。下面给你两个实用的解决办法:

方法一:用--out-format指定输出格式

直接让rsync只输出有差异的文件名,完全避开目录行:

rsync -acn --out-format="%n" folder1/ folder2/

参数说明:

  • -a:保持归档模式,递归处理文件、保留权限等属性
  • -c:基于文件校验和而非修改时间/大小对比,更准确
  • -n:模拟运行,不会实际同步文件
  • --out-format="%n":只输出有差异的文件名(包括新增、修改、需要删除的文件)

另外注意把folder1/*改成folder1/,这样rsync会处理folder1下的所有内容(包括隐藏文件),而folder1/*会漏掉以.开头的隐藏文件。

方法二:用grep过滤目录行

如果你更习惯原来的命令结构,可以用grep把结尾带/的目录行过滤掉:

rsync -avcn folder1/ folder2/ | grep -v '/$'

这里grep -v '/$'的作用是反向匹配所有以/结尾的行(也就是目录),只留下文件相关的差异行。

这两种方法都能帮你精准拿到有差异的文件列表,选哪个看你的使用习惯就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:36:30