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.

dagi12
fonte

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

Sergiy Kolodyazhnyy
fonte
É 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/{} \;
alexis
fonte