diff --git a/inputrename.py b/inputrename.py index f0c6b4f..1ad7bb4 100644 --- a/inputrename.py +++ b/inputrename.py @@ -5,25 +5,33 @@ import argparse import os import sys +from voussoirkit import pathclass from voussoirkit import pipeable +from voussoirkit import spinal @pipeable.ctrlc_return1 def inputrename_argparse(args): - files = (file for file in os.listdir() if args.keyword in file) + if args.recurse: + files = (file for file in spinal.walk_generator('.') if args.keyword in file.basename) + else: + files = (file for file in pathclass.cwd().listdir() if args.keyword in file) prev = None for file in files: - print(file) + print(file.relative_path) this = input('> ') if this == '' and prev is not None: this = prev if this: - os.rename(file, file.replace(args.keyword, this)) + new_name = file.basename.replace(args.keyword, this) + new_name = file.parent.with_child(new_name) + os.rename(file.absolute_path, new_name.absolute_path) prev = this def main(argv): parser = argparse.ArgumentParser(description=__doc__) parser.add_argument('keyword') + parser.add_argument('--recurse', dest='recurse', action='store_true') parser.set_defaults(func=inputrename_argparse) args = parser.parse_args(argv)