#!/usr/bin/env python3 import os import argparse def main(): parser = argparse.ArgumentParser(description='Retain specified number of files in a directory sorted by name, delete others.') parser.add_argument('directory', type=str, help='Path to target directory') parser.add_argument('--keep', type=int, default=2, help='Number of files to retain (default: 2)') args = parser.parse_args() # Validate arguments if args.keep < 0: parser.error("--keep value cannot be negative") if not os.path.isdir(args.directory): parser.error(f"Directory not found: {args.directory}") # Get list of files (exclude subdirectories) files = [] with os.scandir(args.directory) as entries: for entry in entries: if entry.is_file(): files.append(entry.name) # Sort files alphabetically sorted_files = sorted(files) # Identify files to delete to_delete = sorted_files[:-args.keep] if args.keep > 0 else sorted_files.copy() # Delete files and print results for filename in to_delete: filepath = os.path.join(args.directory, filename) try: os.remove(filepath) print(f"Deleted: {filename}") except Exception as e: print(f"Error deleting {filename}: {str(e)}") if __name__ == "__main__": main()