aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorclyhtsuriva <aimeric@adjutor.xyz>2023-06-09 19:29:58 +0200
committerclyhtsuriva <aimeric@adjutor.xyz>2023-06-09 19:29:58 +0200
commit1baa505464486a9023b5b80f04bba3582e76e296 (patch)
tree2892b275eedf4180f435b5c3b44098d7e2157eac
parent8f24048be1d3065433f90c3ede5319778b42e60f (diff)
Add new script that converts file names
Basically removes any special characters except dash, underscores, dots and spaces. More easy to type in a terminal withotu using quotes around a file name
-rwxr-xr-xbin/convert_filenames.sh64
1 files changed, 64 insertions, 0 deletions
diff --git a/bin/convert_filenames.sh b/bin/convert_filenames.sh
new file mode 100755
index 0000000..9ccba13
--- /dev/null
+++ b/bin/convert_filenames.sh
@@ -0,0 +1,64 @@
+#!/usr/bin/env bash
+# Clyhtsuriva
+
+# Check if file arguments are provided
+if [ "$#" -lt 1 ]; then
+ echo "Usage: $0 <file1> [<file2> ...]"
+ exit 1
+fi
+
+# Loop through all file arguments
+for file in "$@"; do
+ # Check if the file exists
+ if [ ! -f "$file" ]; then
+ echo "File '$file' does not exist."
+ exit 1
+ fi
+
+ echo "$file"
+
+ # Get the lowercase version of the file name
+ new_name=$(basename "$file" | tr '[:upper:]' '[:lower:]')
+ echo "$new_name"
+
+# Replace parentheses, brackets, and square brackets with dashes
+ new_name=${new_name//[()]/-}
+ new_name=${new_name//\[/-}
+ new_name=${new_name//\]/-}
+ echo "$new_name"
+
+ # Remove special characters that are not '_', '-', '.' and spaces.
+ new_name=${new_name//[^a-zA-Z0-9_. -]/}
+ echo "$new_name"
+
+ # Replace spaces with '_'
+ new_name=${new_name// / }
+ new_name=${new_name// /_}
+ echo "$new_name"
+
+ # Replace consecutive occurrences of '_-_', '_-', '-_' and '-_-' by '-'.
+ new_name=${new_name//_\-_/-}
+ new_name=${new_name//_\-/-}
+ new_name=${new_name//-\_/-}
+ new_name=${new_name//-\-_/-}
+ echo "$new_name"
+
+ # Replace consecutive occurrences of '-.' by '.'.
+ new_name=${new_name//\-\./.}
+ echo "$new_name"
+
+ # Replace consecutive occurrences of '--' with a single '-'.
+ new_name=${new_name//--/-}
+ echo "$new_name"
+
+ # Replace multiple underscores with single '_'.
+ new_name=${new_name//__/_}
+ echo "$new_name"
+
+ # Remove leading special characters
+ new_name=${new_name##[![:alnum:]]}
+ echo "$new_name"
+
+ # Rename the file
+ mv "$file" "$(dirname "$file")/$new_name"
+done