Avec GNU coreutils (par exemple sur Linux non embarqué ou Cygwin), c'est aussi simple que
cp -a --attributes-only Dir1 Dir2
Ou plus compliqué mais avec une seule passe de système de fichiers (pour encore plus de portabilité ~
doit être écrit sous la forme $HOME
)
find . \( -type d -exec mkdir -p "~/elsewhere/{}" \; \
-o -type f -exec touch "~/elsewhere/{}" \; \)
La complexité ici est celle de la logique booléenne (qui peut être utile à apprendre) et de la priorité (également bonne à savoir) et comment find
implémente ces concepts avec un ET implicite entre les -type
et action ultérieure, et OU faisant une apparition sous la forme -o
.