42 lines
1.4 KiB
Python
Executable file
42 lines
1.4 KiB
Python
Executable file
#!/usr/bin/python3
|
|
|
|
import sys, re, os
|
|
|
|
errortxt = " /some/directory\nRenames _all_ strange filenames in a given directory. No other options, edit the source."
|
|
count = 0
|
|
|
|
# Check for one single commandlineparameter
|
|
try:
|
|
dirname = sys.argv[1]
|
|
except:
|
|
sys.exit(sys.argv[0] + errortxt)
|
|
|
|
# Regex to eliminate everything not belonging into a filename
|
|
# Ey, this is not zombiecode!
|
|
|
|
# whitelist = "[^a-z.A-Z0-9äöüÄÖÜß_+-]" # All trash eliminate
|
|
# whitelist = "[^a-z.A-Z0-9äöüÄÖÜß_+-][^a-z.A-Z0-9äöüÄÖÜß_+-]*" # Reduce trash to "-"
|
|
|
|
whitelist = "[^a-z.A-Z0-9äöüÄÖÜß_+-][^a-z.A-Z0-9äöüÄÖÜß_+-]*"
|
|
cutminus = "^-+"
|
|
|
|
# Open first commandline parameter as a directory
|
|
if os.path.isdir(dirname):
|
|
for filename in os.listdir(dirname):
|
|
tmpfilename = re.sub(whitelist, "-", filename)
|
|
# repair leading "-" and prepend a "0"
|
|
newfilename = re.sub(cutminus, "0-", tmpfilename)
|
|
# Test for already existing target
|
|
if os.path.exists(dirname + "/" + newfilename) == False:
|
|
# show what is happening
|
|
print("moving ", filename, " to ", newfilename)
|
|
os.rename(dirname + "/" + filename, dirname + "/" + newfilename)
|
|
count += 1
|
|
else:
|
|
print("Not overwriting existing file: ", newfilename)
|
|
# Not a directory - exit and say someting nasty
|
|
else:
|
|
sys.exit(sys.argv[0] + errortxt)
|
|
|
|
# Give a summary.
|
|
print("\n", count, " files renamed\n")
|