如何对两个目录(a 和 b)中的文件执行递归比较:
$ diff -r a b
但只查看名称与给定模式匹配的文件。例如,使用 find 命令中可用的相同语法,如下所示:
$ diff -r a b -name "*crazy*"
这将显示 a 和 b 中具有相同名称和路径的文件之间的差异,这些文件的名称中包含“crazy”。
实际上,我正在寻找 diff 中可用的 --exclude 选项的相反选项。
也许这有点间接,但它应该有效。您可以使用find
获取文件列表don't匹配模式,然后“排除”所有这些文件:
find a b -type f ! -name 'crazy' -printf '%f\n' | diff -r a b -X -
The -X -
将使diff
从标准输入读取模式并排除任何匹配的内容。如果您的文件没有像这样有趣的字符,这应该可以工作*
or ?
以他们的名义。唯一的缺点是你的差异不会包括find
命令,所以列出的diff
命令没那么有用。
(我只用 GNU 测试过find
and diff
).
EDIT:
因为只有非 GNUfind
没有-printf
, sed
可以用作替代方案:
find a b -type f ! -name '*crazy*' -print | sed -e 's|.*/||' | diff -X - -r a b
这也是假设非 GNUdiff
has -X
我不知道。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)