Script de Python para encontrar los archivos más grandes con una extensión dada recursivamente

Este simple script de Python listará todos los archivos ordenados por tamaño en el directorio dado recursivamente. Debes dar un argumento -e/--extension para solo considerar extensiones de nombre de archivo específicas. Las extensiones de nombre de archivo se comparan de manera insensible a mayúsculas y minúsculas.

list_largest_files.py
#!/usr/bin/env python3
import os
import argparse

def convert_size(size_bytes):
    """ Convertir tamaño en bytes a un formato legible por humanos. """
    for unit in ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB']:
        if size_bytes < 1024:
            return f"{size_bytes:.2f}{unit}"
        size_bytes /= 1024
    return f"{size_bytes:.2f}YB"

def get_files_with_extensions(root_dir, extensions):
    """ Encontrar recursivamente archivos con las extensiones dadas en el directorio. """
    for root, dirs, files in os.walk(root_dir):
        for file in files:
            if any(file.lower().endswith(ext.lower()) for ext in extensions):
                full_path = os.path.join(root, file)
                size = os.path.getsize(full_path)
                yield full_path, size

def main():
    parser = argparse.ArgumentParser(description="List files with specific extensions sorted by size.")
    parser.add_argument("directory", type=str, help="Directory to search")
    parser.add_argument("-e", "--extension", type=str, action='append', help="File extension to filter by", required=True)
    args = parser.parse_args()

    files = list(get_files_with_extensions(args.directory, args.extension))
    files.sort(key=lambda x: x[1])

    for file, size in files:
        print(f"{convert_size(size)} - {file}")

if __name__ == "__main__":
    main()

Ejemplo de uso: Encontrar los archivos Python más grandes:

list_largest_py.sh
python ListLargestFiles.py -e py  .

Ejemplo de uso: Encontrar (algunos tipos de) películas:

list_largest_movies.sh
python ListLargestFiles.py -e mov -e avi -e mkv -e mp4 ~/Nextcloud

Ejemplo de salida:

list_largest_example_output.txt
[...]
108.81MB - /home/uli/Nextcloud/Google Fotos/20220925_151542.mp4
117.92MB - /home/uli/Nextcloud/Google Fotos/20220925_151958.mp4
237.51MB - /home/uli/Nextcloud/Google Fotos/20220911_115209.mp4
265.02MB - /home/uli/Nextcloud/Google Fotos/20220905_151716.mp4
317.36MB - /home/uli/Nextcloud/Google Fotos/20220912_124906.mp4
431.06MB - /home/uli/Nextcloud/Google Fotos/20220921_153051.mp4

Echa un vistazo a artículos similares por categoría: Python