Add flag for hiding small files

This commit is contained in:
dave 2017-05-02 20:17:51 -07:00
parent f342b2932e
commit cad2a1f073
1 changed files with 19 additions and 4 deletions

View File

@ -23,16 +23,19 @@ unit_names = {
}
def find_files(base_dir, verbose=False):
def find_files(base_dir, min_size=0, verbose=False):
for current_dir, subdirs, files in walk(base_dir):
for file_name in files:
file_path = normpath(join(current_dir, file_name))
if not islink(file_path):
try:
yield (file_path, getsize(file_path))
file_size = getsize(file_path)
except FileNotFoundError:
# File disappeared or dangling link
pass
continue
if file_size < min_size:
continue
yield (file_path, file_size)
def size_to_units(size, unit, round_places=0):
@ -55,10 +58,22 @@ def main():
output_opts.add_argument("-u", "--unit", choices=unit_sizes.keys(), default="b",
help="Convert sizes to unit")
output_opts.add_argument("-r", "--round", type=int, default=0, help="Number of places to round to")
output_opts.add_argument("-m", "--min-size", default="0", help="Ignore files smaller than threshold")
args = parser.parse_args()
files = [i for i in find_files(args.base_dir, verbose=args.verbose)]
min_size = 0
if args.min_size:
try:
min_size = int(args.min_size)
except ValueError:
try:
unit = args.min_size[-1]
min_size = int(args.min_size[0:-1]) * unit_sizes[unit.lower()]
except (KeyError, ValueError):
parser.error("unparseable minimum size: {}".format(args.min_size))
files = [i for i in find_files(args.base_dir, min_size=min_size, verbose=args.verbose)]
files.sort(key=lambda x: x[1])
if args.limit: