#!/bin/sh - todo="$HOME/tmp" work="$HOME/work" when='tomorrow' # todo - conveniently move files between todo and work directories # Steve Kinzler, kinzler@cs.indiana.edu, Jan 11 # http://www.cs.indiana.edu/~kinzler/home.html#unix dodo= case "$1" in -o) dodo=t; shift;; -d) exec perl -e 'for (@ARGV) { /[^?]{8}$/; print "$_\n" if $& && $& <= '"`date +%Y%m%d`"' }' \ "$todo"/todo*_2???????;; -x) exec perl -ne 'print unless /\btodo[^\/]*_2.......($| -> )/';; -h) cat <&2 usage: $0 [ [ -o ] file ... ] | -d | -x ] -o move files out of todo directory (default into) default all due files if none listed -d list any due todo files (default if no files listed) -x act as a filter for lines not ending in a todo file Due dates will be set to "$when" -- manually rename todo files for other due dates. EOF exit 1;; esac case "$#" in 0) case "$dodo" in ?*) case "`$0 -d`" in '') exit;; esac exec $0 -o `$0 -d`;; '') exec $0 -d;; esac;; esac for file do base=`basename "$file"` case "$dodo" in ?*) dest="$work/`echo "$base" | sed 's/^todo_//; s/_2.......$//'`" echo "mv -i $file $dest"; mv -i "$file" "$dest";; *) dest="$todo/todo_${base}_`date +%Y%m%d -d "$when"`" echo "mv -i $file $dest"; mv -i "$file" "$dest";; esac done