当将目录与DIFF进行比较时,就可以将某些文件差异从输出中排除



我正在运行此命令:

diff --recursive a.git b.git

它显示了一些与我无关的文件的差异。是否有一种方法可以没有以下方式显示以下结尾的行:

 ".xaml.g.cs"

或以:

开始的行
 "Binary files"

或其中包含此文本的行:

".git/objects"

一种简单但有效的方法是将输出输出到grep。使用grep -Ev,您可以使用正则表达式忽略行。

diff --recursive a.git b.git | grep -Ev "^< .xaml.g.cs|^> .xaml.g.cs"  | grep -Ev "Binary files$" | grep -v ".git/objects"

这忽略了使用匹配文本的所有行。至于正则表达式: ^表示线首先, $表示线结束。但是至少对于^,您必须将其调整为diff输出(通常以<>开头的行(。

还请注意,diff提供了一个标志--ignore-matching-lines=RE,但它可能无法正如您所期望的那样可行,如此问题/答案所述。而且因为我希望我宁愿使用grep进行过滤。

man diff

给出以下示例:

   ...
   -x, --exclude=PAT
          exclude files that match PAT
   -X, --exclude-from=FILE
          exclude files that match any pattern in FILE
   ...

您是否尝试使用这些开关(例如diff -x=".xaml.g.cs" --recursive a.git b.git(?

最新更新