summaryrefslogtreecommitdiff
path: root/benji_cleaner.sh
diff options
context:
space:
mode:
Diffstat (limited to 'benji_cleaner.sh')
-rwxr-xr-xbenji_cleaner.sh37
1 files changed, 37 insertions, 0 deletions
diff --git a/benji_cleaner.sh b/benji_cleaner.sh
new file mode 100755
index 0000000..cdaf697
--- /dev/null
+++ b/benji_cleaner.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+OLDIFS=$IFS
+IFS=$'\n' # make newlines the only separator
+
+declare -a exprs=("\\\"([^\\\"]+)\\\"|“\1”" "\?|?" "\:|:" "\*|**" ">|>" "<|<" "\|||")
+sedexpr=""
+grepexpr="("
+
+for i in "${exprs[@]}"; do
+ sedexpr+="s|"$i"|g; "
+ grepexpr+="$( cut -d '|' -f 1 <<< "$i" )|"
+done
+
+sedexpr="${sedexpr::-1}"
+grepexpr="${grepexpr::-1})"
+
+for path in $(find "$(pwd)" -type f); do
+ file=$( basename "$path" )
+ [[ ! $( grep -E "$grepexpr" 2>/dev/null <<< "$file" ) ]] && continue
+
+ while true; do
+ question="The following command is about to run: $ mv \"$file\" \"$( sed -r "$sedexpr" <<< "$file" )\""$'\n'"Is this okay [y/n]? "
+ read -p "$question" yn
+ case $yn in
+ [Yy]* ) mv "$file" "$( sed -r "$sedexpr" <<< "$file" )"; break;;
+ [Nn]* ) break;;
+ * ) echo "Please answer yes or no.";;
+ esac
+ done
+
+done
+
+IFS=$OLDIFS
+
+# YOU CAN MAKE THE FILES GLOBAL THOUGH BY JUST REMOVING THE basename CLAUSE, SO DO THAT IF YOU GET ANNOYED AGAIN
+# MAKE IT WORK WITH DIRECTORIES, AS WELL AS ABSOLUTE FILEPATHS (currently you have to run it from the folder of the offending song)