From bdbe33f008d821a58f7b1f8d4a26f1530d56e0dd Mon Sep 17 00:00:00 2001 From: pothead Date: Wed, 4 Sep 2024 18:55:28 +0200 Subject: [PATCH] Cleanes up filenames from strange chars Cleanes up filenames from strange chars --- cleanfilenames.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 cleanfilenames.py diff --git a/cleanfilenames.py b/cleanfilenames.py new file mode 100644 index 0000000..a3f28c2 --- /dev/null +++ b/cleanfilenames.py @@ -0,0 +1,40 @@ +#!/usr/bin/python3 + +import sys, re, os + +errortxt = " mydirectory\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")