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