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. --- debian/changelog | 6 ++++++ progress-du | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ progress-du.1 | 27 +++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100755 progress-du create mode 100644 progress-du.1 diff --git a/debian/changelog b/debian/changelog index 4d68fe4..118b999 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +extrautils (1.9) squeeze; urgency=low + + * Add progress-du. + + -- Lars Wirzenius Tue, 02 Nov 2010 18:23:47 +0000 + extrautils (1.8) squeeze; urgency=low * Add viewprof. 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() diff --git a/progress-du.1 b/progress-du.1 new file mode 100644 index 0000000..a065b8c --- /dev/null +++ b/progress-du.1 @@ -0,0 +1,27 @@ +.\" progress-du.1 - manual page for the progress-du command +.\" Copyright (C) 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 . +.\" +.TH PROGRESS-DU 1 +.SH NAME +progress-du \- show disk usage of a directory tree +.SH SYNOPSIS +.B progress-du +.IR directory ... +.SH DESCRIPTION +.B progress-du +computes the size of a directory tree. +It reports progress as it runs, +to make it nicer for the user to wait. -- cgit v1.2.1