Ou mais complicado, mas com um único passe no sistema de arquivos (para uma portabilidade ainda maior, ~
deve ser escrito como $HOME
)
find . \( -type d -exec mkdir -p "~/elsewhere/{}" \; \
-o -type f -exec touch "~/elsewhere/{}" \; \)
A complexidade aqui é a da lógica booleana (que pode ser de algum benefício para aprender) e precedência (também é bom saber) e como find
implementa esses conceitos com um E implícito entre o -type
e a ação subsequente, e OU fazendo uma aparição como -o
.