summaryrefslogtreecommitdiffstats
path: root/Tools/scripts/dutree.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1992-03-02 16:20:32 (GMT)
committerGuido van Rossum <guido@python.org>1992-03-02 16:20:32 (GMT)
commit2ba9f30489326dcaea8e0c1fdc395805fb618c97 (patch)
treed360c7225310833094e7dc40be5289f9d95ea3e9 /Tools/scripts/dutree.py
parentbecdad3d5e512b08e0dd5994ac7c7ec3e6f84ebc (diff)
downloadcpython-2ba9f30489326dcaea8e0c1fdc395805fb618c97.zip
cpython-2ba9f30489326dcaea8e0c1fdc395805fb618c97.tar.gz
cpython-2ba9f30489326dcaea8e0c1fdc395805fb618c97.tar.bz2
Initial revision
Diffstat (limited to 'Tools/scripts/dutree.py')
-rwxr-xr-xTools/scripts/dutree.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/Tools/scripts/dutree.py b/Tools/scripts/dutree.py
new file mode 100755
index 0000000..c309212
--- /dev/null
+++ b/Tools/scripts/dutree.py
@@ -0,0 +1,52 @@
+#! /usr/local/python
+# Format du output in a tree shape
+
+import posix, string, sys, path
+
+def main():
+ p = posix.popen('du ' + string.join(sys.argv[1:]), 'r')
+ total, d = None, {}
+ for line in p.readlines():
+ [num, file] = string.split(line)
+ size = eval(num)
+ comps = string.splitfields(file, '/')
+ if comps[0] == '': comps[0] = '/'
+ if comps[len(comps)-1] == '': del comps[len(comps)-1]
+ total, d = store(size, comps, total, d)
+ display(total, d)
+
+def store(size, comps, total, d):
+ if comps == []:
+ return size, d
+ if not d.has_key(comps[0]):
+ d[comps[0]] = None, {}
+ t1, d1 = d[comps[0]]
+ d[comps[0]] = store(size, comps[1:], t1, d1)
+ return total, d
+
+def display(total, d):
+ show(total, d, '')
+
+def show(total, d, prefix):
+ if not d: return
+ list = []
+ sum = 0
+ for key in d.keys():
+ tsub, dsub = d[key]
+ list.append((tsub, key))
+ if tsub is not None: sum = sum + tsub
+ if sum < total:
+ list.append((total - sum, '.'))
+ list.sort()
+ list.reverse()
+ width = len(`list[0][0]`)
+ for tsub, key in list:
+ if tsub is None:
+ psub = prefix
+ else:
+ print prefix + string.rjust(`tsub`, width) + ' ' + key
+ psub = prefix + ' '*(width-1) + '|' + ' '*(len(key)+1)
+ if d.has_key(key):
+ show(tsub, d[key][1], psub)
+
+main()