我需要使用bash / shell /脚本将md5sum哈希所有当前目录树文件散列为一个.csv文件,如下所示:
"index.php","add95c73ccafa79b4936cf7236a074f4"
"logs/index.html","1c7b413c3fa39d0fed40556d2658ac73"
非常感谢你;)
答案 0 :(得分: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])
答案 1 :(得分:2)
尝试:
find . -type f -print0 | xargs -0 md5sum | perl -pe 's/^(.*?)\s+(.*)$/"$2","$1"/'
> md5.csv
答案 2 :(得分:0)
md5sum * | awk '{ print "\"" $2 "\",\"" $1 "\"" }'
答案 3 :(得分:0)
这应该有效
perl -pne 's/^"(.*)","([0-9a-f]+)"$/$2 *$1/io' < input | md5sum -c
答案 4 :(得分:0)
您可以按照以下所示进行操作。下面,我使用cksum实用程序来计算CRC校验和。您可以使用生成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