34 lines
1017 B
Python
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}") |