diff --git a/README.md b/README.md index 563e94e..18fa368 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,8 @@ optional arguments: prefix filename with prefix string -B string, --postfix string postfix filename with postfix string + -C int, --remove int remove characters from start or end of filename (+ve + for start, -ve for end) -r string, --rename string replace filename with string -n, --dryrun perform a dry run (will not run any actions) diff --git a/py_rename.py b/py_rename.py index 40521b4..38d7703 100755 --- a/py_rename.py +++ b/py_rename.py @@ -90,6 +90,25 @@ def postfix_it(self, postfix_str): new_name = old_name + postfix_str self._rename(new_name) + def remove_it(self,n_chars): + """Remove characters from the start or end of filename + + :n_chars: int, number of characters to remove. +ve from start, -ve from end + :returns: None + """ + old_name = self.fname + length = len(old_name) + if abs(n_chars) >= length: + self._print( + "Failed to rename {old} : {err}". + format(old=self.full_name, err="Number of characters equals or exceeds length of filename")) + elif n_chars >= 0: + new_name = old_name[n_chars::] + self._rename(new_name) + else: + new_name = old_name[0:n_chars] + self._rename(new_name) + def lower_it(self): """Lowercase the filename :returns: None @@ -152,6 +171,15 @@ def rename(self, rename_string): action='store', help="postfix filename with postfix string" ) + parser.add_argument( + '-C', + '--remove', + dest='remove', + type=int, + metavar='int', + action='store', + help="remove characters from start or end of filename (+ve for start, -ve for end)" + ) parser.add_argument( '-r', '--rename', @@ -205,6 +233,8 @@ def rename(self, rename_string): rename_it.prefix_it(args.prefix) if args.postfix: rename_it.postfix_it(args.postfix) + if args.remove: + rename_it.remove_it(args.remove) if args.lower: rename_it.lower_it() if args.remove_space: