| @@ -0,0 +1,69 @@ | |||||
| #!/bin/sh | |||||
| ## remove-unused-sources | |||||
| # | |||||
| # April 2008, Jonathan Moore Liles | |||||
| # | |||||
| # Simple script to scan a compacted Non-DAW session and remove all | |||||
| # unused sources from disk. | |||||
| # | |||||
| # USAGE: | |||||
| # | |||||
| # $ remove-unused-sources ~/audio/'The Best Song Ever' | |||||
| # | |||||
| # NOTES: | |||||
| # | |||||
| # This script will not ask for comfirmation! It will ruthlessly | |||||
| # delete all unused sources! You have been warned. | |||||
| # | |||||
| SESSION="$1" | |||||
| fatal () | |||||
| { | |||||
| echo Error: "$1" | |||||
| echo 'Aborting!' | |||||
| cleanup | |||||
| exit 1 | |||||
| } | |||||
| set_diff () | |||||
| { | |||||
| diff --new-line-format '' --old-line-format '%L' --unchanged-line-format '' "$1" "$2" | |||||
| } | |||||
| remove_sources () | |||||
| { | |||||
| local FILE | |||||
| while read FILE | |||||
| do | |||||
| echo "Removing source \"${FILE}\"..." | |||||
| rm -f ./"${FILE}" ./"${FILE}-"*.peak | |||||
| done | |||||
| } | |||||
| cleanup () | |||||
| { | |||||
| rm -f "${TEMP}/all-sources" "${TEMP}/used-sources" | |||||
| } | |||||
| cd "$SESSION" || fatal "No such session" | |||||
| [ -f history ] || fatal "Not a Non-DAW session?" | |||||
| grep -qv 'create' history && fatal "Not a compacted session" | |||||
| echo "Scanning \"${SESSION}\"..." | |||||
| sed -n 's/^Region.* :source "\([^"]\+\)".*$/\1/p' history | sort | uniq > "${TEMP}/used-sources" | |||||
| cd sources || fatal "Can't change to source directory" | |||||
| ls -1 | grep -v '\.peak$' | sort > "${TEMP}/all-sources" | |||||
| set_diff "${TEMP}/all-sources" "${TEMP}/used-sources" | remove_sources | |||||
| cleanup | |||||
| echo "Done." | |||||