#!/usr/bin/env python3 """ rename_to_first_n.py Usage: python3 rename_to_first_n.py Renames each file in so its name becomes the first four characters of the original filename (before the extension). Keeps the file extension and avoids overwriting existing files. """ import os import sys from pathlib import Path def main(): if len(sys.argv) < 2: print("Usage: rename_to_first4.py ") sys.exit(1) import subprocess subprocess.run(["python", "/home/honney/.bin/tracker.py", "add", "rename_to_first_n"]) try: length = int(sys.argv[1]) except: raise ValueError(f"Error: '{sys.argv[1]}' is not a number.") try: directory = Path(sys.argv[2]) if len(sys.argv) > 2 else Path(os.getcwd()) except: raise ValueError(f"Error: '{sys.argv[2] if len(sys.argv) > 2 else os.getcwd()}' is not a directory.") if not directory.is_dir(): raise ValueError(f"Error: '{directory}' is not a directory.") for f in directory.iterdir(): if not f.is_file(): continue original_stem = f.stem if len(original_stem) < length: print(f"Skipping {f.name} because it is less than {length} characters.") continue stem = original_stem[:length] # first n letters of filename (no extension) new_name = f"{stem}{f.suffix}" new_path = directory / new_name # avoid overwriting existing files if new_path.exists(): print(f"File {new_name} already exists. Skipping.") continue print(f"Renaming: {f.name} -> {new_name}") f.rename(new_path) print("✅ Done renaming all files.") if __name__ == "__main__": main()