(root)/
Python-3.11.7/
Tools/
scripts/
byteyears.py
       1  #! /usr/bin/env python3
       2  
       3  # Print the product of age and size of each file, in suitable units.
       4  #
       5  # Usage: byteyears [ -a | -m | -c ] file ...
       6  #
       7  # Options -[amc] select atime, mtime (default) or ctime as age.
       8  
       9  import sys, os, time
      10  from stat import *
      11  
      12  def main():
      13  
      14      # Use lstat() to stat files if it exists, else stat()
      15      try:
      16          statfunc = os.lstat
      17      except AttributeError:
      18          statfunc = os.stat
      19  
      20      # Parse options
      21      if sys.argv[1] == '-m':
      22          itime = ST_MTIME
      23          del sys.argv[1]
      24      elif sys.argv[1] == '-c':
      25          itime = ST_CTIME
      26          del sys.argv[1]
      27      elif sys.argv[1] == '-a':
      28          itime = ST_CTIME
      29          del sys.argv[1]
      30      else:
      31          itime = ST_MTIME
      32  
      33      secs_per_year = 365.0 * 24.0 * 3600.0   # Scale factor
      34      now = time.time()                       # Current time, for age computations
      35      status = 0                              # Exit status, set to 1 on errors
      36  
      37      # Compute max file name length
      38      maxlen = 1
      39      for filename in sys.argv[1:]:
      40          maxlen = max(maxlen, len(filename))
      41  
      42      # Process each argument in turn
      43      for filename in sys.argv[1:]:
      44          try:
      45              st = statfunc(filename)
      46          except OSError as msg:
      47              sys.stderr.write("can't stat %r: %r\n" % (filename, msg))
      48              status = 1
      49              st = ()
      50          if st:
      51              anytime = st[itime]
      52              size = st[ST_SIZE]
      53              age = now - anytime
      54              byteyears = float(size) * float(age) / secs_per_year
      55              print(filename.ljust(maxlen), end=' ')
      56              print(repr(int(byteyears)).rjust(8))
      57  
      58      sys.exit(status)
      59  
      60  if __name__ == '__main__':
      61      main()