2つのファイルがあります。
oldlist
- これには、ファイルのリストと各ファイルのmd5ハッシュが含まれます。これは1年前に生成されました。newlist
- ファイルリストと各ファイルのmd5ハッシュも含まれています。ただし、一部のファイルが変更され(例:md5ハッシュが異なる)、いくつかの新しいファイルが追加されました。
oldlist
との間のすべての違いを確認したいが、newlist
に存在しないファイルは無視したいと思いますoldlist
。
つまり、新しいファイルには興味がありません。前の各ファイルのmd5ハッシュを比較して、昨年変更されたファイルがあるかどうかを確認したいと思います。
ベストアンサー1
使用join
両方のファイルで一致する行をマージします。ファイル名が(出力に示されているように)チェックサムの後にあり、空白がないと仮定するmd5sum
と、前のチェックサムと新しいチェックサムとともに、2つのリストのすべてのファイル名が印刷されます。
join -1 2 -2 2 <(sort -k 2 oldlist) <(sort -k 2 newlist)
新しいファイルも表示するには、-a
オプションをに渡しますjoin
。一部の出力後処理では、チェックサムは変更されていないファイル名を削除します。
join -a 2 -1 2 -2 2 <(sort -k 2 oldlist) <(sort -k 2 newlist) |
awk '$2 != $3'