+++ /dev/null
-#! /usr/bin/env python\r
-\r
-# Print the product of age and size of each file, in suitable units.\r
-#\r
-# Usage: byteyears [ -a | -m | -c ] file ...\r
-#\r
-# Options -[amc] select atime, mtime (default) or ctime as age.\r
-\r
-import sys, os, time\r
-from stat import *\r
-\r
-def main():\r
-\r
- # Use lstat() to stat files if it exists, else stat()\r
- try:\r
- statfunc = os.lstat\r
- except AttributeError:\r
- statfunc = os.stat\r
-\r
- # Parse options\r
- if sys.argv[1] == '-m':\r
- itime = ST_MTIME\r
- del sys.argv[1]\r
- elif sys.argv[1] == '-c':\r
- itime = ST_CTIME\r
- del sys.argv[1]\r
- elif sys.argv[1] == '-a':\r
- itime = ST_CTIME\r
- del sys.argv[1]\r
- else:\r
- itime = ST_MTIME\r
-\r
- secs_per_year = 365.0 * 24.0 * 3600.0 # Scale factor\r
- now = time.time() # Current time, for age computations\r
- status = 0 # Exit status, set to 1 on errors\r
-\r
- # Compute max file name length\r
- maxlen = 1\r
- for filename in sys.argv[1:]:\r
- maxlen = max(maxlen, len(filename))\r
-\r
- # Process each argument in turn\r
- for filename in sys.argv[1:]:\r
- try:\r
- st = statfunc(filename)\r
- except os.error, msg:\r
- sys.stderr.write("can't stat %r: %r\n" % (filename, msg))\r
- status = 1\r
- st = ()\r
- if st:\r
- anytime = st[itime]\r
- size = st[ST_SIZE]\r
- age = now - anytime\r
- byteyears = float(size) * float(age) / secs_per_year\r
- print filename.ljust(maxlen),\r
- print repr(int(byteyears)).rjust(8)\r
-\r
- sys.exit(status)\r
-\r
-if __name__ == '__main__':\r
- main()\r