| 
									
										
										
										
											1996-11-27 19:52:01 +00:00
										 |  |  | #! /usr/bin/env python | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1991-07-01 18:20:35 +00:00
										 |  |  | # Print the product of age and size of each file, in suitable units. | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											1991-07-01 18:20:35 +00:00
										 |  |  | # Usage: byteyears [ -a | -m | -c ] file ... | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # Options -[amc] select atime, mtime (default) or ctime as age. | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1992-03-30 11:15:26 +00:00
										 |  |  | import sys, os, time | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | from stat import * | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1991-07-01 18:20:35 +00:00
										 |  |  | # Use lstat() to stat files if it exists, else stat() | 
					
						
							|  |  |  | try: | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |     statfunc = os.lstat | 
					
						
							| 
									
										
										
										
											1992-03-30 11:15:26 +00:00
										 |  |  | except AttributeError: | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |     statfunc = os.stat | 
					
						
							| 
									
										
										
										
											1991-07-01 18:20:35 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Parse options | 
					
						
							| 
									
										
										
										
											1992-01-01 19:35:13 +00:00
										 |  |  | if sys.argv[1] == '-m': | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |     itime = ST_MTIME | 
					
						
							|  |  |  |     del sys.argv[1] | 
					
						
							| 
									
										
										
										
											1992-01-01 19:35:13 +00:00
										 |  |  | elif sys.argv[1] == '-c': | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |     itime = ST_CTIME | 
					
						
							|  |  |  |     del sys.argv[1] | 
					
						
							| 
									
										
										
										
											1992-01-01 19:35:13 +00:00
										 |  |  | elif sys.argv[1] == '-a': | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |     itime = ST_CTIME | 
					
						
							|  |  |  |     del sys.argv[1] | 
					
						
							| 
									
										
										
										
											1991-07-01 18:20:35 +00:00
										 |  |  | else: | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |     itime = ST_MTIME | 
					
						
							| 
									
										
										
										
											1991-07-01 18:20:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  | secs_per_year = 365.0 * 24.0 * 3600.0   # Scale factor | 
					
						
							|  |  |  | now = time.time()                       # Current time, for age computations | 
					
						
							|  |  |  | status = 0                              # Exit status, set to 1 on errors | 
					
						
							| 
									
										
										
										
											1991-07-01 18:20:35 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Compute max file name length | 
					
						
							|  |  |  | maxlen = 1 | 
					
						
							|  |  |  | for file in sys.argv[1:]: | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |     if len(file) > maxlen: maxlen = len(file) | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1991-07-01 18:20:35 +00:00
										 |  |  | # Process each argument in turn | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | for file in sys.argv[1:]: | 
					
						
							| 
									
										
										
										
											2001-01-17 08:48:39 +00:00
										 |  |  |     try: | 
					
						
							|  |  |  |         st = statfunc(file) | 
					
						
							|  |  |  |     except os.error, msg: | 
					
						
							|  |  |  |         sys.stderr.write('can\'t stat ' + `file` + ': ' + `msg` + '\n') | 
					
						
							|  |  |  |         status = 1 | 
					
						
							|  |  |  |         st = () | 
					
						
							|  |  |  |     if st: | 
					
						
							|  |  |  |         anytime = st[itime] | 
					
						
							|  |  |  |         size = st[ST_SIZE] | 
					
						
							|  |  |  |         age = now - anytime | 
					
						
							|  |  |  |         byteyears = float(size) * float(age) / secs_per_year | 
					
						
							| 
									
										
										
										
											2002-09-11 20:36:02 +00:00
										 |  |  |         print file.ljust(maxlen), | 
					
						
							|  |  |  |         print repr(int(byteyears)).rjust(8) | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | sys.exit(status) |