Też nie mam pomysłu na to jak przy Twoim założeniu zachować cytowaną spację w nazwie. Dodawałem maskowanie spacji odwrotnym ukośnikiem w stylu
${nazwa// /$'\\x20'}",
${nazwa// /\\ }" czy
N2=`echo $NAZWA | sed 's/ /\\\\\\\\ /g'`, ale i tak w rezultacie nie umykała ona interpretacji.
Testem do sprawdzania podziału na słowa może być użycie pętli typu
for i in $zmienna albo kobyła
strace -e trace=execve find $zmienna.
Możesz pobawić się separatorem IFS, by zmienić podział na słowa.
Moim zdaniem, samo założenie brania wszystkich opcji w jedną zmienną nie jest dobre. Jaki problem w skrypcie użyć kilku osobnych zmiennych, szczególnie osobnej dla szukanego wyrażenia? Jeśli jednak upierasz się przy niej, spróbuj zmiennej tablicowej:
NAZWA="a b"
OPCJE=("-name")
OPCJE[${#OPCJE[@]}]="$NAZWA"
for i in "${OPCJE[@]}"; do echo "$i"; done
find . "${OPCJE[@]}"