0

次のように、現在のすべてのディレクトリ ツリー ファイルを 1 つの .csv ファイルにハッシュする md5sum には、bash /shell/ スクリプトが必要です。

"index.php","add95c73ccafa79b4936cf7236a074f4"
"logs/index.html","1c7b413c3fa39d0fed40556d2658ac73"

どうもありがとうございます ;)

4

5 に答える 5

3

以下のコマンドを試すことができますが、次の場合にのみ機能します。

  • "ファイル名に文字が含まれていません
  • ファイル名に改行はありません

問題がなければ、これでうまくいくはずです:

find . -type f -print0 | xargs -0 md5sum | \
    sed -r 's/^([0-9a-f]{32})  (.*)/"\2","\1"/'

それ以外の場合は、適切な CSV 引用を行う必要があります。その場合は、 csvモジュールを使用して、これを行うための短い Python スクリプトを作成することをお勧めします。例えば:

#!/usr/bin/env python

import os, csv, sys, subprocess, hashlib

writer = csv.writer(sys.stdout, quoting=csv.QUOTE_ALL)

for directory, subdirectories, filenames in os.walk('.'):
    for filename in filenames:
        h = hashlib.md5()
        full_filename = os.path.join(directory, filename)
        with open(full_filename, 'rb') as f:
            while True:
                data = f.read(8096)
                if len(data) == 0:
                    break
                h.update(data)
        writer.writerow([h.hexdigest(), full_filename])
于 2011-11-21T12:16:04.080 に答える
2

試す:

find . -type f -print0 | xargs -0 md5sum | perl -pe 's/^(.*?)\s+(.*)$/"$2","$1"/'
> md5.csv
于 2011-11-21T12:05:47.797 に答える
0

以下のようにできます。以下では、CRCチェックサムを計算するcksumユーティリティを使用しています。MD5チェックサムを生成するユーティリティを使用できます。出力を.csvファイルにリダイレクトできます。

#!/bin/ksh

for file in $(find $1 -type f)
do
    filename=$(basename $file)
    checksum=$(cksum $file | cut -d " " -f 1)
    echo \"${filename}\",\"${checksum}\"
done
于 2011-11-21T12:27:50.333 に答える
0
md5sum * | awk '{ print "\"" $2 "\",\"" $1 "\"" }'
于 2011-11-21T12:07:20.303 に答える
0

これはうまくいくはずです

perl -pne 's/^"(.*)","([0-9a-f]+)"$/$2 *$1/io' < input | md5sum -c
于 2011-11-21T12:12:28.603 に答える