add utilities dirsize, ksize
PATCH 1/1 add utilities dirsize, ksize
The patch was imported from Yocto git server
(git://git.yoctoproject.org/user-contrib/dvhart/meta-tiny)
as of commit id 4dbeb28dbafeac55d271484ead13914152db826c.
Only dirsize and ksize was picked up.
[YOCTO #5388]
Signed-off-by João Henrique Ferreira de Freitas <[email protected]>
--- scripts/dirsize.py | 69 ++++++++++++++++++++++ scripts/ksize.py | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 234 insertions(+) create mode 100644 scripts/dirsize.py create mode 100644 scripts/ksize.py
scripts/dirsize.py new file +69 -0
@@ -0,0 +1,69 @@ +#!/usr/bin/env python + +import os +import sys +import stat + +class Record: + def create(path): + r = Record(path) + + s = os.lstat(path) + if stat.S_ISDIR(s.st_mode): + for p in os.listdir(path): + pathname = path + "/" + p + ss = os.lstat(pathname) + if not stat.S_ISLNK(ss.st_mode): + r.records.append(Record.create(pathname)) + r.size += r.records[-1].size + r.records.sort(reverse=True) + else: + r.size = os.lstat(path).st_size + + return r + create = staticmethod(create) + + def __init__(self, path): + self.path = path + self.size = 0 + self.records = [] + + def __cmp__(this, that): + if that is None: + return 1 + if not isinstance(that, Record): + raise TypeError + if len(this.records) > 0 and len(that.records) == 0: + return -1 + if len(this.records) == 0 and len(that.records) > 0: + return 1 + if this.size < that.size: + return -1 + if this.size > that.size: + return 1 + return 0 + + def show(self, minsize): + total = 0 + if self.size <= minsize: + return 0 + print "%10d %s" % (self.size, self.path) + for r in self.records: + total += r.show(minsize) + if len(self.records) == 0: + total = self.size + return total + + +def main(): + minsize = 0 + if len(sys.argv) == 2: + minsize = int(sys.argv[1]) + rootfs = Record.create(".") + total = rootfs.show(minsize) + print "Displayed %d/%d bytes (%.2f%%)" % \ + (total, rootfs.size, 100 * float(total) / rootfs.size) + + +if __name__ == "__main__": + main()
scripts/ksize.py new file +165 -0
165 lines not on this page · raw message
Signature · 1 line
1.8.3.2