linux - 使用 diff 比较目录时,有没有办法从输出中排除某些文件差异?

标签 linux unix 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但它可能无法像您预期的那样工作 mentioned in this question/answer .因为它不像我期望的那样工作,所以我宁愿使用 grep用于过滤。

关于linux - 使用 diff 比较目录时,有没有办法从输出中排除某些文件差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56002418/

相关文章:

unix - 从特定扩展名的所有文件中删除最后一行

c - 显示文件类型的函数

linux - 需要替换unix文件中的一个字符

git - 在 github 中创建的文件与推送到 github 的文件之间的区别?

python - 如何通过自定义比较函数找到集合交集?

c - Linux 原始套接字

php - Openemr 安装 ||数据库连接错误

git - 如何在不关闭文件之间的编辑器的情况下解决与 "git mergetool"的多个冲突?

c - 打开文件和文件更新

linux - 通过公共(public)互联网连接到树莓派