A Script to Batch Rename Multiple Files Using an Editor

Python
2014-01-29 19:41 (11 years ago) ytyng

When you start the program, a list of files is displayed in the editor. You can modify and save the list.

The program will rename the files according to your modifications.

Usage:

bulk-rename
bulk-rename *.txt
bulk-rename temp/

The arguments are passed directly to the ls command.

Be careful as using options like -l might cause issues.

It seems safe to strip any /-w+/ patterns if they're given as arguments.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import subprocess
import sys
import os

TEMP_FILE_NAME = '/tmp/bulk-rename-file-names'
EDITOR = 'vim'


def main():
    command_result = subprocess.check_output(["ls", "-1"] + sys.argv[1:])
    file_names = command_result.splitlines()

    with open(TEMP_FILE_NAME, 'w') as fp:
        fp.write('\n'.join(file_names))

    subprocess.check_call([os.environ.get('EDITOR', EDITOR), TEMP_FILE_NAME])

    with open(TEMP_FILE_NAME, 'r') as fp:
        destination_file_names = fp.readlines()

    for source, destination in zip(file_names, destination_file_names):
        if source and destination:
            destination = destination.strip()
            if source != destination:
                print "{} -> {}".format(source, destination)
                os.rename(source, destination)

    os.unlink(TEMP_FILE_NAME)


if __name__ == '__main__':
    main()
Currently unrated
The author runs the application development company Cyberneura.
We look forward to discussing your development needs.

Comments

Archive

2025
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011