2016-11-30 8 views
1

各ファイルには、スクリプトが表示される前にmd5チェックサムが作成されているので、これらの.md5ファイルはすでに存在しています(ファイルが停止した直後に作成されます)。私は、作成された時点から見ている時点まで、誰もファイルを変更していないことを確認しています。Bash MD5checksumループ

私がやっていることは、このリストをループし、すべての.md5チェックサムを見つけて、実際のファイルのmd5チェックサムと比較することです。

例:これは私が

...次のエラーを取得しています

for f in $DIR/* 
do 
    if [[ $f == *".md5" ]] ; then 
     md5sum -c $f 
    fi 
done 

... ...私のディレクトリがどのように見えるか

-rwxr-xr-x 1 awiles awiles 209904416 Nov 29 17:53 590465-1_v1.200.tar.gz* 
-rwxr-xr-x 1 awiles awiles   57 Nov 29 17:53 590465-1_v1.200.tar.gz.md5* 
-rwxr-xr-x 1 awiles awiles 1341076 Nov 29 17:53 590466-1_v1.320.tar.gz* 
-rwxr-xr-x 1 awiles awiles   57 Nov 29 17:53 590466-1_v1.320.tar.gz.md5* 
-rwxr-xr-x 1 awiles awiles 214723375 Nov 29 18:03 590467-1_v2.700.tar.gz* 
-rwxr-xr-x 1 awiles awiles   57 Nov 29 18:03 590467-1_v2.700.tar.gz.md5* 
-r-xr-xr-x 1 awiles awiles 2482573113 Nov 29 18:02 590468-1_v1.020.tar.gz* 
-rwxr-xr-x 1 awiles awiles   46 Nov 29 18:02 590468-1_v1.020.tar.gz.md5* 
-rwxr-xr-x 1 awiles awiles 28043339 Nov 29 17:53 590505-1_v1.040.tar.gz* 
-rwxr-xr-x 1 awiles awiles   57 Nov 29 17:53 590505-1_v1.040.tar.gz.md5* 

私の現在のbashコードであります

md5sum: 590465-1_v1.200.tar.gz: No such file or directory 
590465-1_v1.200.tar.gz: FAILED open or read 
md5sum: WARNING: 1 listed file could not be read 

私はここで間違って何をしていますか?

+0

'md5sum'が現在のディレクトリからファイル名を読み込もうとしています。最初にdirに 'cd 'することができます。 –

答えて

1

md5sumの出力で判断すると、590465-1_v1.200.tar.gzが現在のディレクトリに存在すると見なされます。あなたのスクリプトは、DIR.の場合にのみ機能します。 付属していない場合、あなたはcd$DIRにまずすべきで、このような例:あなたが完了したらcd "$OLDPWD"に覚えておく必要がないように

(
cd "$DIR" && for f in * 
do 
    if [[ $f == *".md5" ]] ; then 
     md5sum -c $f 
    fi 
done 
) 

私は(...)に包み。 (スクリプト内cdを使用すると、しばしば監督に奇妙なバグにつながる。)

-1

簡単な方法:

ls -1 *.md5 |while read line; do cat $line ; done|md5sum -c

いくつかの類似の方法:

md5sum * > checklist.chk#はそのいずれかのファイルのチェックサムのリストを生成します*

md5sum -c checklist.chk#リストをチェックしてチェックします。