GNU diff v3.3 引入了可以解决问题的选项--no-dereference。此选项由diff --help手册页描述但未在手册页中提及。
(另见/sf/answers/2241826751/和https://unix.stackexchange.com/a/151837/72654)
如果您添加如下行:
dir1/synlinkyfile.txt
config.mk
Run Code Online (Sandbox Code Playgroud)
到一个文件.ignore-diff
diff(1)然后你可以像这样执行:
diff -ur -X .ignore-diff
Run Code Online (Sandbox Code Playgroud)
我建议是创建一个忽略文件
find . -type l -exec stat '{}' '+' | grep 'File:' | sort | sed "s/^ File: \`//" | sed s/\'.*// >.ignore-diff
Run Code Online (Sandbox Code Playgroud)
找到子目录中的所有符号链接,获取相关行,对它们进行排序(我喜欢按字母顺序排列)并将其归结为实际符号链接文件的简单文件路径。它完成重定向到 .ignore-diff
当然,也可以执行 .ignore,然后再次执行相同的搜索,但去掉最后一个 sed,并添加更多 sed 以删除除目的地之外的所有内容。
find . -type l -exec stat '{}' '+' | grep 'File:' | sort | sed "s/^ File: \`//" | sed "s/.*-> \`//" | sed "s/'//g" | sed s/\`// > symlinks-dest
Run Code Online (Sandbox Code Playgroud)
对每个目录执行此操作,然后您可以比较这两个符号链接目标文件以比较符号链接目标。
| 归档时间: |
|
| 查看次数: |
3347 次 |
| 最近记录: |