Como copiar o caminho do diretório de preservação de arquivo no Linux?


88

Eu tenho projetos Eclipse e o arquivo ".project" neles, a estrutura de diretórios se parece com ' myProject/.project'. Quero copiar esses arquivos '.project' para outro diretório, mas quero que o nome do diretório anexo seja preservado.

Digamos que eu tenho ' a/myProject/.project', quero copiar ' myProject/.project' para ' b', para que seja ' b/myProject/.project', mas ' b/myProject' não existe. Quando tento um:

 cp -r ./myProject/.project ../b

copia apenas o arquivo '.project', sem o diretório 'myProject'. Por favor informar.

Respostas:


153

A opção que você precisa é --parents, por exemplo:

jim@prometheus:~$ cp --parents test/1/.moo test2/
jim@prometheus:~$ ls -la test2/
total 42
drwxr-xr-x   3 jim jim    72 2010-09-14 09:32 .
drwxr-xr-x 356 jim jim 43136 2010-09-14 09:32 ..
drwxr-xr-x   3 jim jim    72 2010-09-14 09:32 test
jim@prometheus:~$ ls -la test2/test/1/.moo
-rw-r--r-- 1 jim jim 0 2010-09-14 09:32 test2/test/1/.moo


7

Use tarcom algo como:

mkdir b; tar cpf - myProject/ | tar xpf - -C b/

(Não testado. Faça um teste a seco primeiro ou tente em um cenário de maquete.)


funciona surpreendentemente bem! No mac: mkdir b; tar -c -f new.tar $ (cat myP); tar -x -f new.tar -C b /; #myP é arquivo de texto com lista de caminhos-de-arquivos a serem copiados
alexey

4

Primeiro use mkdir -ppara criar a pasta de destino com a criação de caminho pai recursivo. Em seguida, copie o conteúdo para a pasta de destino:

mkdir -p b/myProject/.project
cp -r a/myProject/.project/file b/myProject/.project


3

Eu uso o cpio em combinação com o find. Explicação aqui .

Exemplo para o seu caso de uso:

find /a/myProject/.project/ -type f | cpio -p -dumv /b/.

Este comando localiza todos os arquivos /a/myProject/.project/e copia, preservando o caminho, todos os arquivos contidos nele.


1
.project é um arquivo, não dir!
ddbug

1

Além disso --parents, também é necessário adicionar a -ropção para evitar omitir a cópia da maioria dos diretórios internos

$ cp --parents test/1/.moo test2/
cp: omitting directory ‘test/1/.moo’

Portanto, o comando que funciona para mim é

$ cp --parents -r test/1/.moo test2/


-3

Eu usei --parentscom o cpcomando e trabalhei perfeitamente comigo. para mais detalhes, use sempre o manual. Obrigado.


3
Não adiciona nada às outras 5 respostas.
Deer Hunter

Os respondentes, por favor, note que .project no Eclipse é um arquivo, não um diretório. Então, por exemplo, mkdir -pa / .project não faz sentido.
ddbug
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.