比较两个目录中的文件和版本,其中一个目录有符号链接?

时间:2017-03-20 13:16:40

标签: linux bash unix find

我们正在将一些实用程序从一个旧项目转移到一个新的待版本控制的(在同一个磁盘上,在不同的用户名下),并且我的任务是找到属于旧版本的实用程序帐户但不是新帐户,并查找两个帐户之间不同的文件。这个新帐户已经活动了大约一年,人们对旧帐户中的某些文件进行了(小)更改,而没有将它们放在新帐户中。

这些实用程序位于我只能读取访问权限的远程服务器上(我自己的主文件夹除外)。

旧帐户,称为user1,其所有实用程序都在~user1 / bin /文件夹中,包括每个实用程序的源代码,可执行文件和脚本。

新帐户,比如user2,已经设置为~user2 / bin /文件夹中的每个'executable / script'都是子文件夹中相应文件的符号链接~user2 / src / {utilityname} /,它还包含该可执行文件的源。

是否有比

更容易的比较两个目录的方法
find ~user1/bin/ -maxdepth 1 -printf '%s, %p\n' | sort -k2 > user1.txt
find -L ~user2/bin/ -maxdepth 1 -printf '%s, %p\n' | sort -k2 > user2.txt

并手动比较结果,看看有什么不同/缺失?

此外,上述命令只允许我比较~user2 / bin /文件夹中的可执行文件/脚本,即使~user2 / src / {utilityname} /中的源代码在user1和user1之间相同,也可能不同。 user2(例如,因为脚本中的路径不同)。是否可以搜索实用程序的符号链接目标所在的文件夹以查找具有相同名称的源文件,以便我可以直接比较user1和user2之间的源文件?

1 个答案:

答案 0 :(得分:1)

我会使用不同的方法:查找没有重复的文件。我建议this thread,尤其是合并fdupesfindgrep的部分:

fdupes -r backup/ documents/ > dup.txt
find backup/ -type f | grep -Fxvf dup.txt

尽管如此,可能还需要进行一些调整以使其适应您的需求,例如使用fdupes' " -s"选项。