Ste*_*ski 8 diff text-processing file-comparison join
我有两个文件:
oldlist
- 这包含文件列表和每个文件的 md5 哈希。这是一年前生成的。newlist
- 这还包含文件列表和每个文件的 md5 哈希值。但是,一些文件已更改(例如,它们的 md5 哈希值不同)并添加了一些新文件。我想查看oldlist
和之间的所有差异newlist
,但我想忽略oldlist
.
也就是说,我不关心新文件。我只想比较每个旧文件的 md5 哈希值,以便我可以查看去年是否有任何文件发生了更改。
使用join
结合匹配来自这两个文件的行。假设文件名在校验和之后(如在md5sum
输出中)并且不包含空格,这将打印两个列表中存在的所有文件名,以及旧校验和和新校验和:
join -1 2 -2 2 <(sort -k 2 oldlist) <(sort -k 2 newlist)
Run Code Online (Sandbox Code Playgroud)
要同时查看新文件,请将-a
选项传递给join
. 一些输出后处理将删除校验和未更改的文件名。
join -a 2 -1 2 -2 2 <(sort -k 2 oldlist) <(sort -k 2 newlist) |
awk '$2 != $3'
Run Code Online (Sandbox Code Playgroud)