-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmd5sum_directory.py
58 lines (46 loc) · 2.14 KB
/
md5sum_directory.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# Author: Aaron Odell #
# Written for mac OSX. Untested on other operating systems...
import os
import commands
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-directory",help="Top level directory to obtain md5sums for. -directory /myDirectory ",type=str)
parser.add_argument("-outFile",help="OutFile to write sums to. Full file path is a good idea",type=str)
parser.add_argument("-excludeHidden",help="Look for hidden directories and files. Valid inputs = True,False. Default = False",type=str)
args = parser.parse_args()
def recurse_md5Sum(directory,fileList,excludeHidden="True"):
directoryList = os.listdir(directory)
for item in directoryList:
### Exclude hidden files ###
if excludeHidden == "True":
if item[0] == ".":
continue
#####################################
path = directory+'/'+item
if os.path.isdir(path):
fileList = recurse_md5Sum(path,fileList)
else:
commandPath = directory+'/'+item
commandPath = commandPath.replace(" ","\ ")
commandPath = commandPath.replace("(","\(")
commandPath = commandPath.replace(")","\)")
commandPath = commandPath.replace("$","\$")
commandPath = commandPath.replace("'","\\'")
md5sum = commands.getoutput("md5 -r "+commandPath+" | cut -d "+'" "'+" -f1")
fileList.append([path,md5sum])
###############
return fileList
def writeSumsToFile(directory,outFile,excludeHidden="True"):
md5sums = recurse_md5Sum(directory,[],excludeHidden=excludeHidden)
md5sums = sorted(md5sums,key=lambda x: x[0])
#######################################################################
print "All md5sums for file in directory "+str(directory)+" calculated"
print "Number of files found "+str(len(md5sums))
print "Writing sums to file "+str(outFile)+" ..."
###########################
outFile = open(outFile,'w')
for fileSum in md5sums:
outFile.write(fileSum[0]+'\t'+fileSum[1]+'\n')
###############
outFile.close()
writeSumsToFile(args.directory,args.outFile,args.excludeHidden)