From bc2cca4eb24e79dbe15a56b76ec7c9a0445877bd Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 6 Nov 2010 13:14:10 +0000 Subject: Add progress-du. --- progress-du | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 progress-du (limited to 'progress-du') diff --git a/progress-du b/progress-du new file mode 100755 index 0000000..157e849 --- /dev/null +++ b/progress-du @@ -0,0 +1,60 @@ +#!/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() -- cgit v1.2.1