summaryrefslogtreecommitdiff
path: root/bin/fixnames
diff options
context:
space:
mode:
Diffstat (limited to 'bin/fixnames')
-rwxr-xr-xbin/fixnames31
1 files changed, 31 insertions, 0 deletions
diff --git a/bin/fixnames b/bin/fixnames
new file mode 100755
index 0000000..dd1c5b3
--- /dev/null
+++ b/bin/fixnames
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+
+# Fix filenames in music library: no spaces or special chars.
+
+fixname() { echo "$1" | iconv -f utf8 -cs -t ascii//IGNORE; }
+
+# 1: fix directories
+for f in *; do
+ [ -d "$f" ] || continue
+ n=$(fixname "$f")
+ [ "$f" = "$n" ] && continue
+ echo "$n"
+ mv "$f" "$n"
+done
+
+for f in */*; do
+ [ -d "$f" ] || continue
+ n=$(fixname "$f")
+ [ "$f" = "$n" ] && continue
+ echo "$n"
+ mv "$f" "$n"
+done
+
+# 2: fix files
+for f in */*/*; do
+ [ -f "$f" ] || continue
+ n=$(fixname "$f")
+ [ "$f" = "$n" ] && continue
+ echo "$n"
+ mv "$f" "$n"
+done