diff --git a/file-types.py b/file-types.py
new file mode 100755
index 0000000..2eea4ae
--- /dev/null
+++ b/file-types.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python3
+
+import os
+
+exts = {}
+exts2files = {}
+
+for l in open('.files'):
+    l = l.strip()
+    _, ext = os.path.splitext(l)
+    if ext not in exts:
+        exts[ext] = 0
+    exts[ext] += 1
+    if ext not in exts2files:
+        exts2files[ext] = {}
+    f = os.path.split(l)[-1]
+    if f not in exts2files[ext]:
+        exts2files[ext][f] = 0
+    exts2files[ext][f] += 1
+
+
+import pprint
+
+x = [(v,k) for k,v in exts.items()]
+x.sort()
+x.reverse()
+pprint.pprint(x)
+
+print()
+print()
+for v, k in x:
+    x = [(b,a) for a,b in exts2files[k].items()]
+    x.sort()
+    x.reverse()
+
+    print(v, k)
+    for i in x[:10]:
+        print("   %5d %s" % (i[0], i[1]))
