複数のファイルを監視して、どれか1つでも更新されたら指定したディレクトリにコピーします。
Dropboxにバックアップするのに使ってます。
copy_file_when_modified.zsh
#!/bin/zsh -f
if [[ $# < 2 ]]; then
echo "Copy file to a directory when any one of files was modified." >&2
echo "usage: `/usr/bin/basename $0` destDir(Such as DropBoxDir) file1 file2 ..." >&2
exit 1
fi
DESTDIR=$1
if [[ ! -d $DESTDIR ]]; then
echo "directory $DESTDIR doesn't exist." >&2
exit 1
fi
shift
ALLREADABLE=true
for fidx in {1..$#}
do
if [[ ! -r $argv[$fidx] ]]; then
echo "can't read file " $argv[$fidx] >&2
ALLREADABLE=false
fi
done
if [[ false == $ALLREADABLE ]]; then
exit 1
fi
/usr/bin/inotifywait -e modify -m $argv | while read LINE
do
FILENAME=`echo $LINE | /bin/sed "s/ MODIFY$//"`
echo "copy $FILENAME to $DESTDIR" >&2
/bin/cp "$FILENAME" "$DESTDIR"
done