]> git.phdru.name Git - dotfiles.git/blob - bin/recode-filenames-recursive.py
b7787e491cea8b6c53d3863dcab94dd0b7c96b56
[dotfiles.git] / bin / recode-filenames-recursive.py
1 #! /usr/bin/env python3
2
3 import sys, os
4 from recode_filenames import _recode
5
6 if len(sys.argv) == 3:
7     start_dir = '.'
8 elif len(sys.argv) == 4:
9     start_dir = sys.argv[3]
10 else:
11     sys.exit("Usage: %s src_enc dst_enc [start_dir]" % sys.argv[0])
12
13
14 def _onerror(exc):
15     raise exc
16
17 plist = list(os.walk(start_dir, topdown=False, onerror=_onerror))
18
19
20 save_dir = os.getcwd()
21 for dirname, _subdirs, fnames in plist:
22     if dirname == '.':
23         continue
24     os.chdir(dirname)
25     for filename in fnames:
26         # if not exists - it was renamed already
27         if os.path.exists(filename) and \
28                 os.path.isfile(filename):
29             newname = _recode(filename)
30             if newname != filename:
31                 os.rename(filename, newname)
32     os.chdir('..')
33     dirname = os.path.basename(dirname)
34     newname = _recode(dirname)
35     if newname != dirname:
36         os.rename(dirname, newname)
37     os.chdir(save_dir)