-
Notifications
You must be signed in to change notification settings - Fork 2
/
mvToOneFolderRename.py
58 lines (54 loc) · 1.75 KB
/
mvToOneFolderRename.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# script to move all the files from mentioned folder to the finalfolder. It does not move the subfolders for now
# which is safer
# usage : python3 mvRname.py folder1 folder2 folder3 folder4 ... finalFolder
# Author: Pratyush Tewari (tewari.pratyush@gmail.com)
import sys, os
from os import walk
import time
def show_options(exitval):
"Show the options and exit."
print('USAGE: %s directories ... [destination directory]' % sys.argv[0])
sys.exit(exitval)
#
# Parse arguments
#
if len(sys.argv) < 3:
show_options(-1)
dst_dir = sys.argv[-1] # last argument
dirs = sys.argv[1:-1] # all the other argument but last. argc[0] is the command it self
if not os.path.isdir(dst_dir):
print('%s is not a directory.' % dst_dir)
show_options(-2)
for dir in dirs:
if not os.path.exists(dir):
print('%s does not exist.' % dir)
show_options(-3)
# print(dst_dir)
# print(dirs)
countofFiles = 0
#
# Move files from the dirs into the dst_dir
#
for dir in dirs:
f = []
for (dirpath, dirnames, filenames) in walk(dir):
# f.extend(filenames)
for file in filenames:
basename = os.path.basename(file)
if basename == ".DS_Store":
continue
# print basename
head, tail = os.path.splitext(basename)
dst_file = os.path.join(dst_dir, basename)
# rename if necessary
count = 0
while os.path.exists(dst_file):
count += 1
dst_file = os.path.join(dst_dir, '%s-%d%s' % (head, count, tail))
fromfile = os.path.join(dirpath, file)
tofile = os.path.abspath(dst_file)
# print('Renaming %s to %s' % (fromfile, tofile))
countofFiles += 1
os.rename(fromfile, tofile)
print("Moved %s files." % countofFiles, end='\r')
print('Done: Moved %s files' % countofFiles)