2017-01-12 11 views
2

md5sumチェック付きのファイルが2つあります。リストは、ファイルが同じであっても異なるパスを持ちます。私は各ファイルのmd5合計を確認したい。私たちは何千ものファイルを話しているので、その違いだけを私に見せるためにスクリプトが必要です。最初のリストはバニラで、2番目のリストはファイルの現在の状態です。どのファイルが元のものと違うのかを知りたいこれを行うには、2つのリストを比較したいと思います。すべての行にmd5 sumとファイルの場所/名前があります。誰かがそれをする方法を知っていましたか?リストの1つに余分なファイルが1つあればどうなりますか?Bash - md5チェックサムでファイルリストを2つ比較する

df7a0edcb7994581430379db56d8d53b /home/user/file-1.php 
94b2a24a1fc9883246fc103f22818930 /home/user/file-1.1.php 
e1af39e94239a944440ab2925393ae60 /home/user/file-2.php 
ce74e43d24d9c36cd579e932ee94b152 /home/user/file-3.php 
f5233ee990c50aade7c4e3ab9b4fe524 /home/user/file-4.php 

期待結果:チェックサム(アクティブリスト)と第二のファイルのコンテンツの

df7a0edcb7994581430379db56d8d53b /home/user/vanila/file-1.php 
e1af39e94239a944440ab2925393ae60 /home/user/vanila/file-2.php 
ce74e43d24d9c36cd579e932ee94b152 /home/user/vanila/file-3.php 
95b7d47ed7134912270f8d3059100e8c /home/user/vanila/file-4.php 

例:

チェックサム(バニラリスト)と最初のファイル内のコンテンツの

To show me that file-4.php is with different md5 sum. 
If shows that there is an extra file (file-1.1.php) it's a bonus! 
+1

は、入力ファイルを提供し、あなたの同じファイルの必要な出力 – Inian

+0

@Inianファイルのコンテンツの例が追加され、期待される結果も追加されました! – SasnycoN

答えて

3

正しいツールであるAwkを使用してみると、ファイルを検索するに

$ cat file1 
df7a0edcb7994581430379db56d8d53b /home/user/vanila/file-1.php 
e1af39e94239a944440ab2925393ae60 /home/user/vanila/file-2.php 
ce74e43d24d9c36cd579e932ee94b152 /home/user/vanila/file-3.php 
95b7d47ed7134912270f8d3059100e8c /home/user/vanila/file-4.php 

$ cat file2 
df7a0edcb7994581430379db56d8d53b /home/user/file-1.php 
94b2a24a1fc9883246fc103f22818930 /home/user/file-1.1.php 
e1af39e94239a944440ab2925393ae60 /home/user/file-2.php 
ce74e43d24d9c36cd579e932ee94b152 /home/user/file-3.php 
f5233ee990c50aade7c4e3ab9b4fe524 /home/user/file-4.php 

は、他の1つの中に存在していないではありません、次のようにfile2file1があり、この、

awk -F"/" 'FNR==NR{filearray[$1]=$NF; next }!($1 in filearray){printf "%s has a different md5sum\n",$NF}' file2 file1 
file4.php has a different md5sum 

awk -F"/" 'FNR==NR{filelist[$NF]=$NF; next;}!($NF in filelist){printf "%s is an extra file",$NF}' file1 file2 
file-1.1.php is an extra file 
+1

これは魅力のように機能します!ありがとうございました!しかし、私は別のファイルがあることを私に示す別のアプローチを考えています。私はそれを一度投稿します!速い応答のために再度ありがとう! – SasnycoN

+0

@SasnycoN:お手伝いを! – Inian

+0

アップデートも機能しています。私の他のアプローチは、 "Active list"(file2)をとり、 'sed'を使って" Vanilla list "(file1)のパスを更新することでした。その後、次を実行する 'md5sum -c --quiet file2' これはバニラファイルで実行され、異なるmd5合計のファイルがあるかどうか、見つからないファイルがある場合は私に表示されますバニラで – SasnycoN