2012-03-08 14 views
0

ディレクトリを現在のディレクトリにスキャンし、ディレクトリツリーの各ファイルのmd5チェックサム値を生成するbashスクリプトを作成する必要があります。また、ファイルへの相対パスをファイルに保存し、ファイル内のチェックサムを出力する必要があります。ディレクトリツリーは次のように見える場合bashでディレクトリを再帰的にスキャンする

例えば:

. 
├── d 
│   ├── file1.c 
│   └── file2.c 
├── e 
│   └── file3.c 
└── f 
    └── file4.cpp 

出力は次のようなものでなければなりません:

d8e8fca2dc0f896fd7cb4cb0031ba249 d/file1.c 
d8e8fca2dc0f896fd7cb4cb0031ba249 d/file2.c 
d8e8fca2dc0f896fd7cb4cb0031ba249 e/file3.c 
d8e8fca2dc0f896fd7cb4cb0031ba249 f/file4.cpp 

しかし、私は時にCDファイルへのパスを維持する方法を見つけることができませんそれらに...

答えて

6
find . -type f -exec md5sum {} \; 

か...

find . -type f | xargs -n 1 -d "\n" md5sum 
+0

正常に動作します。ありがとう:) –

+1

'\;'の代わりに '+'ターミネーターを 'find'で使用することでパフォーマンスを大幅に向上させることができます。前者は '-exec'にブロックとして渡すために複数の引数を収集します。後で** **引数ごとに**のプロセスが生成されます。プロセスのインスタンス化にはコストがかかります。いくつかのシステムでは、 '-exec ...()+'は 'xargs'にパイプラインを上回るかもしれません。 – JRFerguson

関連する問題