#!/usr/bin/sh -e
+# Turns a nested hierarchy of music files into a flat one
find "${1:-.}" -regex '.*\.\(mp3\|ogg\|wav\|aac\|wma\|flac\|alac\)' -type f | \
- while read line; do
- newline=$(echo $line | sed -E -e 's|[[:space:]]?-[[:space:]]?|_|g' \
- -e 's/ */ /g')
+ while read line; do
+ newline=$(echo $line | sed -E -e 's|[[:space:]]?-[[:space:]]?|_|g' \
+ -e 's/ */ /g')
- o=$(echo -n $(dirname "$newline") | sed -e 's|\./||g' -e 's|/| - |g')
+ o=$(echo -n $(dirname "$newline") | sed -e 's|\./||g' -e 's|/| - |g')
- first=$(echo -n $(basename "$newline") | cut -d " " -f 1)
- if $(echo $first | grep -Eq '^[0-9]+$'); then
- o="$o $(echo -n "- $first -")"
- num=2
- else
- o="$o -"
- num=1
- fi
+ first=$(echo -n $(basename "$newline") | cut -d " " -f 1)
+ if $(echo $first | grep -Eq '^[0-9]+$'); then
+ o="$o $(echo -n "- $first -")"
+ num=2
+ else
+ o="$o -"
+ num=1
+ fi
- o="$o $(echo -n $(basename "$newline") | cut -d " " -f ${num}-)"
- cp -v "$line" "${2:-.}/$o"
- done
+ o="$o $(echo -n $(basename "$newline") | cut -d " " -f ${num}-)"
+ cp -v "$line" "${2:-.}/$o"
+ done