cria arquivos vazios com a mesma estrutura de diretórios que o diretório de referência

4

Eu tenho um Dir1 com vários subdiretórios e arquivos dentro dele. Eu pretendo copiar o Dir1 para Dir2 para que todos os arquivos nele sejam apenas arquivos vazios, mas com o mesmo nome de arquivo como Dir1.

Então eu pretendo empurrar o Dir2 para o github para explicar exemplos de estrutura de dados e nomes de arquivos para os usuários.

Existe um comando para copiar arquivos de uma forma apenas para os arquivos de destino estarem vazios, mas com o mesmo nome de arquivo?

    
por learnningprogramming 18.01.2017 / 21:33

3 respostas

5

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 .

    
por 18.01.2017 / 21:53
4

Com o GNU coreutils (por exemplo, no Linux ou Cygwin não integrado), é tão simples quanto

cp -a --attributes-only Dir1 Dir2
    
por 19.01.2017 / 00:38
0
cd /path/to/oldroot
find . -type d -exec mkdir -p \"/path/to/newroot/{}\"\;
find . -type f -exec touch \"/path/to/newroot/{}\"\;
    
por 18.01.2017 / 21:50

Tags