#!/usr/bin/env python3 """ Usage: python3 recount_files.py () """ import os from pathlib import Path import sys import re from termcolor import colored def main(): if len(sys.argv) == 2: dir = Path(os.getcwd()) elif (len(sys.argv) == 3): dir = Path(sys.argv[2]) else: print("Usage: recount_files.py ()") sys.exit(1) import subprocess subprocess.run(["python", "/home/honney/.bin/tracker.py", "add", "recount_files"]) number = int(sys.argv[1]) pattern = re.compile(r'^\d+') files = sorted( [f for f in dir.iterdir() if f.is_file() and pattern.match(f.name)], key=lambda f: float(f.stem) ) min_num = int(files[0].stem) max_len = max(len(files[-1].stem), 2) for f in files: try: delta = int(f.stem)-min_num new_file_name = Path(f"{f.parent}/{delta+number:0{max_len}d}{f.suffix}") except: delta = float(f.stem)-min_num new_file_name = Path(f"{f.parent}/{delta+number:0{max_len+2}.1f}{f.suffix}") if not new_file_name.is_file(): print( colored("Renamed: ", "green") + colored(str(f.parent), "cyan") + colored("[", "white") + colored(f.name, "red") + colored(" -> ", "white") + colored(new_file_name.name, "green") + colored("]", "white") ) f.rename(new_file_name) else: print(colored(f"{new_file_name.name} already exists. Aborting", "red")) if __name__ == "__main__": main()