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 seu conteúdo. Quero dizer que quero exatamente os mesmos diretórios com nomes de arquivos, mas os deixando em branco / vazios. Eu tenho alguns aplicativos de exemplo em alguma linguagem de programação e quero reescrevê-los com meu próprio estilo, mas mantendo o modo como eles foram organizados em arquivos.

Eu seria grato por alguma ajuda.

Respostas:


36

A partir de man cp

--atributes-only não copia os dados do arquivo, apenas os atributos

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

Faz cp -R --attributes-only somedirectory destinationdirectory


É exatamente disso que eu preciso. Muito obrigado.
dagi12

4
+1 porque não achei que alguém já tivesse implementado isso - realmente surpreso.
Mgarciaisaia

@mgarciaisaia Fiquei surpreso como você, quando verifiquei a página de manual hoje de manhã =) #
Sergiy Kolodyazhnyy 15/15/15

10

É bom que o Ubuntu cptenha esse recurso, mas se você se encontrar em uma máquina que não possui (o estilo BSD cpnão possui, por exemplo, o OS X também não), é muito fácil fazer isso find. Aqui está como uma linha dupla (para facilitar a leitura):

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

Se copy_dirjá existir, você pode pular o -pargumento para mkdirque findele percorrerá a árvore de diretórios de cima para baixo. Para trabalhos grandes, você pode economizar mais ou menos um milissegundo, encerrando os comandos com, em +vez de \;se o findsuportar (provavelmente).

Edit: Os comandos acima negligenciados para manipular links simbólicos, que podem ser copiados com uma terceira execução de find( não termine esta com +):

% find . -type l -exec cp -R {} ../copy_dir/{} \;
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.