unixのdiff

dlname_arr=("aaa_Before" "aaa_After" "bbb_Before" "bbb_After" "aaa_diff" "bbb_diff" "diff_diff")

#ファイル数の一致確認且つ1個以上の確認
aaa_Before_flnum=`find ${dlname_arr[0]} -type f -name "*.[ch]" | wc -l`
aaa_After_flnum=`find ${dlname_arr[1]} -type f -name "*.[ch]" | wc -l`
bbb_Before_flnum=`find ${dlname_arr[2]} -type f -name "*.[ch]" | wc -l`
bbb_After_flnum=`find ${dlname_arr[3]} -type f -name "*.[ch]" | wc -l`
if test $aaa_Before_flnum -eq 0\
-a $aaa_Before_flnum -ne $aaa_After_flnum\
-a $aaa_Before_flnum -ne $bbb_Before_flnum\
-a $aaa_Before_flnum -ne $bbb_After_flnum ; then
echo "ファイル数が0個または各ディレクトリのファイル数が一致していません"
exit
fi

#ファイル名の一致確認
for cnt in `seq 1 $flnum`
do
aaa_Before_flname=`find ${dlname_arr[0]} -type f -name "*.[ch]" | cut -d'/' -f2 | head -n $cnt | tail -n 1`
aaa_After_flname=`find ${dlname_arr[1]} -type f -name "*.[ch]" | cut -d'/' -f2 | head -n $cnt | tail -n 1`
bbb_Before_flname=`find ${dlname_arr[2]} -type f -name "*.[ch]" | cut -d'/' -f2 | head -n $cnt | tail -n 1`
bbb_After_flname=`find ${dlname_arr[3]} -type f -name "*.[ch]" | cut -d'/' -f2 | head -n $cnt | tail -n 1`

if test $aaa_Before_flname != $aaa_After_flname\
-o $aaa_Before_flname != $bbb_Before_flname\
-o $aaa_Before_flname != $bbb_After_flname ; then
echo "各ディレクトリのファイル名が一致しません"
exit
fi
done

#diff関連の空ディレクトリ作成
for cnt in `seq 4 6`
do
if [ -e ${dlname_arr[$cnt]} ] ; then
rm -rf ${dlname_arr[$cnt]}
fi
mkdir ${dlname_arr[$cnt]}
done

#比較結果ファイル作成
flnum=`find ${dlname_arr[0]} -type f -name "*.[ch]" | wc -l`
for cnt in `seq 1 $flnum`
do
flname=`find ${dlname_arr[0]} -type f -name "*.[ch]" | cut -d'/' -f2 | head -n $cnt | tail -n 1`
diff ${dlname_arr[0]}"/"$flname ${dlname_arr[1]}"/"$flname > ${dlname_arr[4]}"/"$flname
diff ${dlname_arr[2]}"/"$flname ${dlname_arr[3]}"/"$flname > ${dlname_arr[5]}"/"$flname
diff ${dlname_arr[4]}"/"$flname ${dlname_arr[5]}"/"$flname > ${dlname_arr[6]}"/"$flname
done