Muchas gracias por tu ayuda. Gracias a eso he avanzado pero me he visto de nuevo atascado ya que al comparar nombres de ficheros siendo alguno con espacio no lo hace bien. Debería de avanzar un array y avanza otro .Dejo el código con el que intentaba calcular la intersección de los directorios para que veas mejor a lo que me refiero:
#!/bin/bash
declare -a carpetas=()
declare -a carpetas2=()
i=0
j=0
if test -d "$1"
then
if test -d "$2"
then
cd $1; find -maxdepth 1 ! \( -type d \)| cut -c 3- |sort > dirs
while read elemento
do
carpetas=("${carpetas[@]}" "$elemento")
done < ./dirs
cd $2; find -maxdepth 1 ! \( -type d \)| cut -c 3- |grep -v "dirs" |sort> dirs
while read elemento
do
carpetas2=("${carpetas2[@]}" "$elemento")
done < ./dirs
tamanyo1=${#carpetas[@]}
tamanyo2=${#carpetas2[@]}
while true
do
fich="${carpetas[$i]}"
fich2="${carpetas2[$j]}"
echo $fich
echo $fich2
if [ "$fich" == "$fich2" ]
then
echo "El fichero "${carpetas[$i]}" es común a ambos directorios"
let i=i+1
let j=j+1
elif [ "$fich" > "$fich2" ]
then
let j=j+1
elif [ "$fich" < "$fich2" ]
then
let i=i+1
fi
if [ $i -eq $tamanyo1 ] || [ $j -eq $tamanyo2 ]
then
break
fi
done
fi
fi