#!/usr/bin/python # Copyright 2010 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import os import sys import ttystatus def file_usage(ts, pathname): st = os.lstat(pathname) ts['total'] += st.st_blocks * 512 def dir_usage(ts, pathname): for dirname, subdirs, basenames in os.walk(pathname): ts['dirname'] = dirname file_usage(ts, dirname) subdirs.sort() basenames.sort() for basename in basenames: file_usage(ts, os.path.join(dirname, basename)) def main(): ts = ttystatus.TerminalStatus() ts.add(ttystatus.ElapsedTime()) ts.add(ttystatus.Literal(' ')) ts.add(ttystatus.ByteSize('total')) ts.add(ttystatus.Literal(' (')) ts.add(ttystatus.Counter('dirname')) ts.add(ttystatus.Literal(' dirs) ')) ts.add(ttystatus.Pathname('dirname')) ts['total'] = 0 for name in sys.argv[1:]: if os.path.isdir(name): dir_usage(ts, name) else: file_usage(ts, name) ts.finish() if __name__ == '__main__': main()