Con GNU coreutils (ad es. su Linux non embedded o Cygwin), è semplice come
cp -a --attributes-only Dir1 Dir2
O in modo più complicato ma con un singolo passaggio del filesystem (per una portabilità ancora maggiore ~ dovrebbe essere scritto come $HOME )
find . \( -type d -exec mkdir -p "~/elsewhere/{}" \; \
-o -type f -exec touch "~/elsewhere/{}" \; \)
La complessità qui è quella della logica booleana (che può essere di qualche beneficio da imparare) e della precedenza (anche buona da sapere) e come find implementa questi concetti con un AND implicito tra -type e l'azione successiva, e OPPURE apparire come -o .