Files

34 lines
1017 B
Python

#!/usr/bin/env python3
"""
Find the largest files in a directory tree.
Usage: python3 largest_files.py [directory] [count]
"""
import os
import sys
from pathlib import Path
def find_largest_files(directory=".", count=10):
"""Find the N largest files in a directory tree."""
largest = []
directory = Path(directory)
for path in directory.rglob("*"):
if path.is_file():
try:
size = path.stat().st_size
largest.append((path, size))
except (OSError, PermissionError):
continue
largest.sort(key=lambda x: x[1], reverse=True)
return largest[:count]
if __name__ == "__main__":
dir_arg = sys.argv[1] if len(sys.argv) > 1 else "."
count_arg = int(sys.argv[2]) if len(sys.argv) > 2 else 10
results = find_largest_files(dir_arg, count_arg)
print(f"Top {len(results)} largest files in {dir_arg}:")
print("-" * 60)
for path, size in results:
print(f"{size:>12,} bytes {path}")