Directory of Snapshots
Your if conditions can be simplified. Instead of this:

if ( `tcsh -f -c "ls -1 DSC*.jpg &gt;&amp; /dev/null" &amp;&amp; echo yes` == "yes" ) then


You could write like this:

if ( `ls DSC*.jpg &gt;&amp; /dev/null &amp;&amp; echo x` != "" ) then


That is:


you don't need to spawn a tcsh sub-shell
you don't need the -1 for ls to list files in a single column because you redirect that to /dev/null anyway
the `...` part will only output anything if there were files, so you don't need yes == yes, it's enough to check for emptiness


If you don't mind using Bash instead of Tcsh, then the ifs can be even more simple:

if ls DSC*.jpg &amp;&gt; /dev/null; then


A lot less useless fluff.

With Bash you could simplify the repetitive blocks with a function, for example:

check_files() {
    glob=$1
    flags=$2
    nomsg=$3
    echo Checking "$glob"
    if ls $glob &amp;&gt;/dev/null; then
        jhead -a$flags -ft -autorot -n $glob
    else
        echo $nomsg
    fi
    echo
}

check_files 'DSC*.jpg' nef 'no Nikon jpg files'
check_files 'DSC*.JPG' NEF 'no Nikon JPG files'
check_files 'p*.jpg' rw2 'no Canon jpg files'
check_files 'P*.JPG' RW2 'no Canon JPG files'