bash - 递归区分目录,忽略所有二进制文件

标签 bash shell diff binaryfiles

在 Fedora Constantine 盒子上工作。我希望以递归方式diff 两个目录来检查源更改。由于项目的设置(在我自己参与所述项目之前!叹息),目录包含源代码和二进制文件,以及大型二进制数据集。虽然 diffing 最终适用于这些目录,但如果我可以忽略二进制文件,可能需要 20 秒。

据我所知,diff 没有“忽略二进制文件”模式,但有一个忽略参数,它会忽略文件 的正则表达式。我不知道在那里写什么来忽略二进制文件,无论扩展名如何。

我正在使用以下命令,但它不会忽略二进制文件。有谁知道如何修改此命令来执行此操作?

diff -rq dir1 dir2

最佳答案

有点作弊,但这是我使用的:

diff -r dir1/ dir2/ | sed '/Binary\ files\ /d' >outputfile

这递归地比较 dir1 和 dir2,sed 删除二进制文件的行(以“二进制文件”开头),然后它被重定向到输出文件。

关于bash - 递归区分目录,忽略所有二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6710878/

相关文章:

linux - 遍历文件并解析占位符变量

bash - 如何在 cron 中的每个月的第一个工作日运行脚本?

bash - 在变量赋值的 RHS 上引用与不引用变量

bash - 安装 Oh My Zsh 时 shell 脚本代码中无法访问命令

linux - 如何查找所有以/filesystem开头的文件系统

mercurial - mercurial 中的标签差异

git - 如何让 Git 忽略空格和制表符?

java - 如何用sed删除Java项目的注释?

bash - 将 Bash 变量传递给 CURL

git - 为 Git GUI 差异窗口设置 UTF-8 显示