#!/bin/sh # # thumbnail_reap - remove dead image thumbnails # # Run this script in a web directory that has been indexed via # thumbnail_index. It'll remove all the thumbnail and info files # that are no longer used. # # (C) 1995,1996 by Jef Poskanzer . All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # Defaults. recurse=no # Parse args. while true ; do case "$1" in -r ) recurse=yes shift ;; -* ) echo "usage: thumbnail_reap [-r]" >&2 exit 1 ;; * ) break ;; esac done if [ $# -ne 0 ] ; then echo "usage: thumbnail_reap [-r]" >&2 exit 1 fi tmp1=/tmp/tr1.$$ tmp2=/tmp/tr2.$$ rm -f $tmp1 $tmp2 ( ls | sed 's/\.[^.]*$/_t.jpg/' ; ls | sed 's/\.[^.]*$/_t.info/' ) | sort > $tmp1 ( cd .thumbnails ; ls ) | sort > $tmp2 comm -13 $tmp1 $tmp2 | sed 's,^,.thumbnails/,' | xargs rm -f rm -f $tmp1 $tmp2 # Now recurse if requested. if [ $recurse = yes ] ; then for file in * ; do if [ -d "$file" ] ; then echo "$file/" >&2 ( cd "$file" ; thumbnail_reap -r ) fi done fi