Script Python pour trouver les plus gros fichiers avec une extension donnée récursivement

Ce script Python simple listera tous les fichiers triés par taille de fichier dans le répertoire donné récursivement. Vous devez donner un argument -e/--extension pour ne considérer que des extensions de nom de fichier spécifiques. Les extensions de nom de fichier sont comparées de manière insensible à la casse.

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

def convert_size(size_bytes):
    """ Convertit la taille en octets en un format lisible par l'humain. """
    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):
    """ Trouve récursivement les fichiers avec les extensions données dans le répertoire. """
    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()

Exemple d’utilisation : Trouver les plus gros fichiers Python :

list_largest_py.sh
python ListLargestFiles.py -e py  .

Exemple d’utilisation : Trouver (certains types de) films :

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

Exemple de sortie :

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

Consultez les articles similaires par catégorie : Python