Con GNU coreutils (por ejemplo, en Linux no integrado o Cygwin), es tan simple como
cp -a --attributes-only Dir1 Dir2
O de manera más complicada pero con un solo paso del sistema de archivos (para una portabilidad aún mayor ~ debe escribirse como $HOME )
find . \( -type d -exec mkdir -p "~/elsewhere/{}" \; \
-o -type f -exec touch "~/elsewhere/{}" \; \)
La complejidad aquí es la de la lógica booleana (que puede ser de algún beneficio para aprender) y la precedencia (también es bueno saberlo) y cómo find implementa estos conceptos con un AND implícito entre -type y la acción subsiguiente, y O hacer una aparición como -o .