List file size in disk

26/Dec/2023

List all files bigger than size in a given path

import os
import sys

def run(path, minsize = 0):
    for root, directories, files in os.walk(path):
        for name in files:
            fullpath = os.path.join(root, name)
            try:
                filesize = os.path.getsize(fullpath)
                if filesize >= minsize:
                    print(f'{filesize:>11} {fullpath}')
            except OSError as e:
                print(f'cannot read {name}: {e}')
            except Exception as e:
                print(f'ignoring {name}: {e}')

if __name__ == '__main__':
    if len(sys.argv) < 2:
        print(f'usage:\n\t{sys.argv[0]} <root path> [minimum size e.g.: 1M]')
        exit(0)

    root = os.path.abspath(sys.argv[1])
    size = 0
    # if the user provided a minimum size, get the value in bytes
    if len(sys.argv) > 2:
        filesize = sys.argv[2]
        if filesize.upper().endswith('K'):
            size = int(filesize.replace('K',''))
            size = size * 1000
        elif filesize.upper().endswith('M'):
            size = int(filesize.replace('M',''))
            size = size * 1000 * 1000
        elif filesize.upper().endswith('G'):
            size = int(filesize.replace('G',''))
            size = size * 1000 * 1000 * 1000
        else:
            try:
                size = int(filesize)
            except Exception as e:
                print(f'failed to convert minimum size: {e}')
                exit(0)

    run(root, size)