summaryrefslogtreecommitdiff
path: root/rdiff-backup/misc/find2dirs
blob: 9d919d30ff1c6379e78912eacef083b085f51aec (plain)
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
#!/usr/bin/env python

from __future__ import generators
import sys, os, stat

def usage():
	print "Usage: find2dirs dir1 dir2"
	print
	print "Given the name of two directories, list all the files in both, one"
	print "per line, but don't repeat a file even if it is in both directories"
	sys.exit(1)

def getlist(base, ext = ""):
	"""Return iterator yielding filenames from directory"""
	if ext: yield ext
	else: yield "."

	fullname = os.path.join(base, ext)
	if stat.S_ISDIR(stat.S_IFMT(os.lstat(fullname)[stat.ST_MODE])):
		for subfile in os.listdir(fullname):
			for fn in getlist(base, os.path.join(ext, subfile)): yield fn

def main(dir1, dir2):
	d = {}
	for fn in getlist(dir1): d[fn] = 1
	for fn in getlist(dir2): d[fn] = 1
	for fn in d.keys(): print fn

if not len(sys.argv) == 3: usage()
else: main(sys.argv[1], sys.argv[2])