#!/bin/sh # # Create MP3 links with p2p-friendly names # mp3path=~/multimedia/sound/mp3 lnpath=~/mp3 usage() { echo "usage: $(basename $0) [-d] [-r]" >&2 exit 1 } while getopts ":dr" c do case "$c" in d) mkdirs=1;; r) rebuild=1;; :|'?') usage 1;; esac done if [ $OPTIND -le $# ]; then usage; fi if [ -n "$rebuild" ]; then rm -rf "$lnpath" || exit 1; fi if [ ! -d "$lnpath" ]; then mkdir -p "$lnpath" || exit 1; fi find "$mp3path" -name '*.[Mm][Pp]3' -type f | \ nawk -v mp3path="$mp3path" -v lnpath="$lnpath" -v mkdirs="$mkdirs" ' BEGIN { sub(/[^\/]$/, "&/", mp3path); sub(/[^\/]$/, "&/", lnpath) pathpat = "^" mp3path } { gsub(/["`$\\]/, "\\\\&"); name = $0 sub(pathpat, "", name); dir = name; gsub(/\//, " - ", name) if (mkdirs) system("dir=\$(dirname \"" dir "\"); mkdir -p \"" lnpath "\$dir\"; " \ "ln -s \"" $0 "\" \"" lnpath "\$dir/" name "\"") else system("ln -s \"" $0 "\" \"" lnpath name "\"") }' .