Copie arquivos e diretórios sem conteúdo de arquivos

18

Existe uma maneira de copiar a estrutura de diretórios com arquivos, mas sem o seu conteúdo. Quero dizer que quero exatamente os mesmos diretórios com nomes de arquivos, mas deixando-os em branco / vazios. Tenho alguns aplicativos de exemplo em alguma linguagem de programação e quero reescrevê-los com meu próprio estilo, mas mantendo a maneira como eles foram organizados em arquivos.

Eu ficaria muito grato por qualquer ajuda.

    
por dagi12 15.05.2015 / 18:05

2 respostas

36

De man cp

  

- somente atributos                 não copie os dados do arquivo, apenas os atributos

Então, se você deseja copiar todas as pastas e arquivos que estão em somedirectory

do cp -R --attributes-only somedirectory destinationdirectory

    
por Sergiy Kolodyazhnyy 15.05.2015 / 18:12
10

É bom que o Ubuntu cp tenha esse recurso, mas se você se encontrar em uma máquina que não possui (o estilo BSD cp não, por exemplo, o OS X também não), é muito fácil para fazer com find . Aqui é como um dois-liner (para legibilidade):

% cd original_dir
% find . -type d -exec mkdir -p ../copy_dir/{} \;
% find . -type f -exec touch ../copy_dir/{} \;

Se copy_dir já existir, você poderá ignorar o argumento -p para mkdir , pois find irá percorrer a árvore de diretórios de cima para baixo. Para trabalhos grandes, você pode reduzir mais um milissegundo terminando os comandos com + em vez de \; se o seu find suportar (provavelmente).

Editar: Os comandos acima negligenciaram o manuseio de links simbólicos, que podem ser copiados com uma terceira execução de find ( não termine este com + ):

% find . -type l -exec cp -R {} ../copy_dir/{} \;
    
por alexis 15.05.2015 / 23:14