对符号链接运行 diff

对符号链接运行 diff

我有两个文件夹包含许多损坏的符号链接。

有没有办法diff比较链接的目标而不是尝试跟踪链接?

答案1

对于“链接内容”,我假设您指的是“链接目标”。如果正确,那么确实有。有点。而且您必须对 shell 重定向有创意 :)

diff -u \
<(cd /path/to/dir1 && find . -type l -exec stat '{}' '+' | grep 'File:' | sort) \
<(cd /path/to/dir2 && find . -type l -exec stat '{}' '+' | grep 'File:' | sort)

它的作用是diff将两个命令的输出作为输入运行:

cd /path/to/dir1 && find . -type l -exec stat '{}' '+' | grep 'File:' | sort
cd /path/to/dir2 && find . -type l -exec stat '{}' '+' | grep 'File:' | sort

这些find | grep | sort命令显示它在 dir1 和 dir2 中可以找到的所有符号链接的名称和目标,以及它们的目标。因此最终结果是您将看到哪些符号链接不同。

(根据原始答案进行编辑,原始答案在 的输出中包含了文件名的完整路径,ls因此显示每个文件都不同。cd首先使用 解决了这个问题。此外,如果符号链接具有不同的日期和时间,diff 也会将它们显示为不同的。通过使用 来解决这个问题,stat以提取我们真正想要的信息。)

相关内容