X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=bin%2Frecode-filenames-recursive.py;fp=bin%2Frecode-filenames-recursive.py;h=b7787e491cea8b6c53d3863dcab94dd0b7c96b56;hb=3fdf2f7baaa3a67880de95948d6ee76bc698fbc9;hp=186d5001370155bc46a9778e835ab368f1112cfe;hpb=0477080a03713846f689faf58a3d0df4028e32fc;p=dotfiles.git diff --git a/bin/recode-filenames-recursive.py b/bin/recode-filenames-recursive.py index 186d500..b7787e4 100755 --- a/bin/recode-filenames-recursive.py +++ b/bin/recode-filenames-recursive.py @@ -1,39 +1,37 @@ -#! /usr/bin/env python +#! /usr/bin/env python3 import sys, os +from recode_filenames import _recode if len(sys.argv) == 3: - start_dir = '.' + start_dir = '.' elif len(sys.argv) == 4: - start_dir = sys.argv[3] + start_dir = sys.argv[3] else: - sys.exit("Usage: %s src_enc dst_enc [start_dir]" % sys.argv[0]) - + sys.exit("Usage: %s src_enc dst_enc [start_dir]" % sys.argv[0]) -def _p(plist, dirname, names): - plist.append((dirname, names)) +def _onerror(exc): + raise exc -plist = [] -os.path.walk(start_dir, _p, plist) -plist.reverse() +plist = list(os.walk(start_dir, topdown=False, onerror=_onerror)) -from recode_filenames import _recode - save_dir = os.getcwd() -for dirname, names in plist: - os.chdir(dirname) - for filename in names: - # if not exists - it was renamed already - if os.path.exists(filename) and \ - os.path.isfile(filename): - newname = _recode(filename) - if newname != filename: - os.rename(filename, newname) - os.chdir('..') - dirname = os.path.basename(dirname) - newname = _recode(dirname) - if newname != dirname: - os.rename(dirname, newname) - os.chdir(save_dir) +for dirname, _subdirs, fnames in plist: + if dirname == '.': + continue + os.chdir(dirname) + for filename in fnames: + # if not exists - it was renamed already + if os.path.exists(filename) and \ + os.path.isfile(filename): + newname = _recode(filename) + if newname != filename: + os.rename(filename, newname) + os.chdir('..') + dirname = os.path.basename(dirname) + newname = _recode(dirname) + if newname != dirname: + os.rename(dirname, newname) + os.chdir(save_dir)