我有两个文件夹包含许多损坏的符号链接。
有没有办法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
以提取我们真正想要的信息。)