Skip to content

Instantly share code, notes, and snippets.

@louisswarren
Last active February 5, 2018 08:42
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Embed
What would you like to do?
Batch rename files using your editor
#!/usr/bin/env python3
import os
import subprocess
import tempfile
EDITOR = os.environ.get('EDITOR', 'vim')
def input_new_names(old_names):
with tempfile.NamedTemporaryFile(suffix='.tmp') as fname_file:
fname_file.write(('\n'.join(old_names)).encode())
fname_file.flush()
subprocess.call(EDITOR.split() + [fname_file.name])
fname_file.seek(0)
new_contents = fname_file.read()
return new_contents.decode().strip().split('\n')
def main(args):
targets = sorted(args)
destinations = input_new_names(targets)
for old, new in zip(targets, destinations):
os.rename(old, new)
if __name__ == '__main__':
import sys
if len(sys.argv) > 1:
main(sys.argv[1:])
else:
main(os.listdir())
@louisswarren
Copy link
Author

If you leave lines blank, silly things can happen. GIGO.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment