Você pode selecionar diretórios com o glob:
for d in ./*/; do
mv "$d" dest_dir/
done
Se você fez deseja usar uma matriz + um teste explícito
files_and_dirs=( ./* )
for fd in "${files_and_dirs[@]}"; do
if [[ -d "$fd" ]]; then
mv "$fd" dest_dir/
fi
done
AFAIK, ao contrário de cp
, mv
, não aceita a opção -r
(recursiva).
files_and_dirs
não foi encontrado porque não é um comando - se você quiser ver os valores na matriz, use echo "${files_and_dirs[@]}"