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

如何用Bash命令对比目录中仅行序不同的文件差异

批量验证目录中对应文件是否仅行顺序不同

要批量对比两个目录结构中对应文件排序后是否一致,可以结合find和排序后的diff命令实现,直接遍历所有文件并验证:

核心命令

find folderA -type f -exec sh -c '
  fileB="${0/folderA/folderB}"
  if [ -f "$fileB" ]; then
    if diff <(sort "$0") <(sort "$fileB") >/dev/null; then
      echo "无差异: $0 ↔ $fileB"
    else
      echo "存在差异: $0 ↔ $fileB"
    fi
  else
    echo "对应文件不存在: $fileB"
  fi
' {} \;

命令解释

  • find folderA -type f:遍历folderA下所有普通文件,获取每个文件的完整路径
  • fileB="${0/folderA/folderB}":将当前文件路径中的folderA替换为folderB,得到folderB中对应的文件路径
  • if [ -f "$fileB" ]; then:检查folderB中是否存在对应文件,避免因文件缺失导致报错
  • diff <(sort "$0") <(sort "$fileB") >/dev/null:对两个文件分别排序后对比,将diff的输出重定向到/dev/null,只通过返回值判断是否有差异(返回0表示排序后内容完全一致)
  • 根据diff的返回值输出结果:排序后一致则提示“无差异”,否则提示“存在差异”

示例验证

结合你给出的目录结构和文件内容:

  • folderA/folderX/fileX.txt和folderB/folderX/fileX.txt仅行顺序不同,排序后内容一致
  • folderA/folderX/fileY.txt和folderB/folderX/fileY.txt存在内容差异(orange vs blue),排序后仍不一致

执行命令后会输出:

无差异: folderA/folderX/fileX.txt ↔ folderB/folderX/fileX.txt
存在差异: folderA/folderX/fileY.txt ↔ folderB/folderX/fileY.txt

完全符合预期的验证结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:45:34