我需要的bash /殼/腳本的md5sum散列所有當前目錄樹中的文件到一個單獨的.csv文件是這樣的:猛砸/殼/腳本MD5哈希樹輸出到.csv文件
"index.php","add95c73ccafa79b4936cf7236a074f4"
"logs/index.html","1c7b413c3fa39d0fed40556d2658ac73"
非常感謝你很多;)
我需要的bash /殼/腳本的md5sum散列所有當前目錄樹中的文件到一個單獨的.csv文件是這樣的:猛砸/殼/腳本MD5哈希樹輸出到.csv文件
"index.php","add95c73ccafa79b4936cf7236a074f4"
"logs/index.html","1c7b413c3fa39d0fed40556d2658ac73"
非常感謝你很多;)
嘗試:
find . -type f -print0 | xargs -0 md5sum | perl -pe 's/^(.*?)\s+(.*)$/"$2","$1"/'
> md5.csv
是的,工作像魅力,但輸出是這樣的: –
dd5d02cc750d2855cf6f6c5bf5bea587 ./language/index.html –
@EvanPalMcDan:請嘗試我修改後的命令。 – codaddict
md5sum * | awk '{ print "\"" $2 "\",\"" $1 "\"" }'
如果文件名有空格,則會失敗。 – codaddict
謝謝!使用正確的輸出像這樣,但我需要它通過所有目錄遞歸處理,沒有此錯誤:md5sum:templ:是目錄 「index.php」,「31fa74772d49e0c661ce8ee28f52b590」 –
這應該工作
perl -pne 's/^"(.*)","([0-9a-f]+)"$/$2 *$1/io' < input | md5sum -c
ThX,但我在UNIX操作系統;) –
@EvanPalMcDan:再來一次?你認爲我的解決方案是什麼? – sehe
我沒有在樹上的exe文件;)md5sum.exe:命令未找到 –
你可以試試下面的命令,但它只會工作,如果:
"
字符如果沒關係,那麼這應該適合你:
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])
謝謝Mark,Work Like Charm :) –
您可以這樣做,如下所示。下面,我使用計算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
工作完美,但沒有文件路徑:( –
如果你需要輸出完整的文件路徑,那麼請檢查以下內容 #!/ bin/ksh for $(find $ 1 -type f) do checksum = $(cksum $ file | cut -d「」-f 1) echo \「$ {file} \」,\「 $ {checksum}「 完成 – Drona
你應該真的*嘗試*的東西,回來的問題,而不是要求人們爲你寫代碼。 –
Srrry Noufal,但這是我的大問題;) –