Refresh and added usage tracking
This commit is contained in:
+84
-24
@@ -1,27 +1,87 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import sys
|
||||
import glob
|
||||
|
||||
# Check if scheme is provided
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: rename_filtered <scheme> [folder]"
|
||||
echo
|
||||
echo "Example:"
|
||||
echo " Files in folder:"
|
||||
echo " myfile_E123.txt"
|
||||
echo " myfile_E456.txt"
|
||||
echo " myfile_E789.txt"
|
||||
echo " myfile_E2468.txt"
|
||||
echo
|
||||
echo " Run:"
|
||||
echo " rename_filtered \"????????E!!!\" ./"
|
||||
echo
|
||||
echo " Result:"
|
||||
echo " myfile_E123.txt → 123.txt"
|
||||
echo " myfile_E456.txt → 456.txt"
|
||||
echo " myfile_E789.txt → 789.txt"
|
||||
echo " myfile_E2468.txt → myfile_2468.txt"
|
||||
def process_files(files, scheme):
|
||||
scheme_len = len(scheme)
|
||||
|
||||
exit 1
|
||||
fi
|
||||
for filename in files:
|
||||
print(f"Processing file: {filename}")
|
||||
print(f"Against scheme: {scheme}")
|
||||
|
||||
# Call the Python script with scheme and optional folder argument
|
||||
python3 /home/honney/.bin/rename_filtered.py "$@"
|
||||
# Get the actual filename without the directory path
|
||||
base = os.path.basename(filename)
|
||||
|
||||
name, ext = os.path.splitext(base)
|
||||
|
||||
if scheme_len == len(name):
|
||||
new_name = ""
|
||||
for i in range(scheme_len):
|
||||
current_letter = scheme[i]
|
||||
if current_letter == "?":
|
||||
pass
|
||||
elif current_letter == "!":
|
||||
new_name += name[i]
|
||||
elif current_letter == name[i]:
|
||||
new_name += current_letter
|
||||
else:
|
||||
print(f"Mismatch at position {i}, skipping {filename}")
|
||||
new_name = None
|
||||
break
|
||||
if new_name:
|
||||
rename_file(filename, new_name, ext)
|
||||
else:
|
||||
print("No new name Generated. It is not supposed to do that")
|
||||
return
|
||||
|
||||
def rename_file(file, new_name, ext):
|
||||
dirname = os.path.dirname(file) # correct: preserve folder
|
||||
old_base = os.path.basename(file)
|
||||
|
||||
if old_base != new_name:
|
||||
new_filepath = os.path.join(dirname, new_name + ext)
|
||||
os.rename(file, new_filepath)
|
||||
print(f"Renamed '{old_base}' → '{new_name + ext}'")
|
||||
else:
|
||||
print(f"No renaming needed for '{old_base}'.")
|
||||
|
||||
|
||||
def main():
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: scheme.py <scheme> [folder]")
|
||||
sys.exit(1)
|
||||
else:
|
||||
print("Usage: rename_filtered <scheme> [folder]")
|
||||
print()
|
||||
print("Example:")
|
||||
print(" Files in folder:")
|
||||
print(" myfile_E123.txt")
|
||||
print(" myfile_E456.txt")
|
||||
print(" myfile_E789.txt")
|
||||
print(" myfile_E2468.txt")
|
||||
print()
|
||||
print(" Run:")
|
||||
print(" rename_filtered \"????????E!!!\" ./")
|
||||
print()
|
||||
print(" Result:")
|
||||
print(" myfile_E123.txt → 123.txt")
|
||||
print(" myfile_E456.txt → 456.txt")
|
||||
print(" myfile_E789.txt → 789.txt")
|
||||
print(" myfile_E2468.txt → myfile_2468.txt")
|
||||
|
||||
sys.exit(1)
|
||||
import subprocess
|
||||
subprocess.run(["python", "/home/honney/.bin/tracker.py", "add", "rename_filtered"])
|
||||
|
||||
scheme = sys.argv[1]
|
||||
folder = sys.argv[2] if len(sys.argv) > 2 else "."
|
||||
|
||||
# Get all files in the folder (assuming files are in the current directory by default)
|
||||
files = glob.glob(os.path.join(folder, "*"))
|
||||
|
||||
# Run the renaming logic
|
||||
process_files(files, scheme)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user