質問: シェルでファイルのハッシュを取得する方法 シェル(.shのファイル)でフォルダに格納されている複数のファイルからファイル名、ハッシュをとって hash.txtというファイルに以下のようなレイアウトで作りたいのです。 ファイル名,ハッシュ ・ ・ md5というコマンドをつかえばハッシュがとれることは わかったのですが、これをどのようにファイルに書き込んでいくのか 方法がわかりません。 当方、unixをつかうのも初めてでどうしたらよいのか全然わかりません。(依頼してきた人も長期休暇中で困ってます) どこかサンプルや、解説があるようなhpでも構わないので どなたか教えてください。
回答: osが何でmd5というコマンドの出力形式も分かりませんが、とりあえず手元にあるsolarisで同じようなことをするのであれば、 cshで foreach h (*) echo $h","`digest -a md5 $h`|tee -a /tmp/digest end とかするとできますが・・・ shやbash等では foreach h (*) とendの代わりに for h in $(ls);do とdoneを使って、 for h in $(ls);do echo $h","`digest -a md5 $h`|tee -a /tmp/digest done とかやるとできました。 おそらく、このdigest -a md5 の箇所をmd5というコマンドに置き換えるといいのだと思います。 とりあえず、コマンドに意味は カレントディレクトリにあるすべてのファイルに対して echo...のコマンドを実行する。 echoのところの意味は まずファイル名を表示し、","の後にdigestコマンドで出力されたmd5ハッシュ値を表示し、|teeで 表示されている実行結果を「/tmp/digest」というファイルに書き出すという内容です。 細かい使い方はそれぞれのコマンドを検索すると簡単に出てくると思います。