archive_patch.sh: some improvements
[cmccabe-bin] / archive_patch.sh
1 #!/bin/sh
2
3 #
4 # archive_patch.sh
5 #
6 # Archives old files
7 #
8 # copyright Colin Patrick McCabe, 2011
9 #
10
11 die() {
12     echo $@
13     exit 1
14 }
15
16 usage() {
17     echo
18     echo "$0: archives old files"
19     echo
20     echo "-c               copy the file rather than moving it"
21     echo "-d <dir>         directory where the file should end up (default: .)"
22     echo "-h               This help message"
23     echo
24 }
25
26 copy=0
27 destdir=.
28 while getopts  "cd:h" flag
29 do
30     case $flag in
31     c)  copy=1;;
32
33     d)  destdir=$OPTARG;;
34
35     h)  usage
36         exit 1
37         ;;
38
39     *) usage
40         exit 1;;
41     esac
42 done
43 shift $((OPTIND-1))
44
45 if [ $copy -eq 1 ]; then
46     cmd="cp -f"
47 else
48     cmd="mv -f"
49 fi
50
51 [ -d "$destdir" ] || die "destdir '$destdir' is not a directory"
52
53 for file in "$@"; do
54     [ -e "$file" ] || die "'$file' does not exist"
55 done
56 for file in "$@"; do
57     new_file_name=$destdir/`date +'%Y-%m-%d'`_`basename $file`
58     $cmd "${file}" "${new_file_name}" || die "failed on $file"
59 done