Linux'ta dizin yolunu koruyarak dosya nasıl kopyalanır?


88

Eclipse projelerim ve bunlarda ".project" dosyam var, dizin yapısı ' myProject/.project' gibi görünüyor . Bu '.project' dosyalarını başka bir dizine kopyalamak istiyorum, ancak çevreleyen dizin adının korunmasını istiyorum.

Diyelim ki ' a/myProject/.project', ' myProject/.project' ' b' kelimesini kopyalamak istiyorum , bu yüzden ' b/myProject/.project', ama ' b/myProject' yok. Bir denediğimde:

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

'myProject' dizini olmadan yalnızca '.project' dosyasını kendisi kopyalar. Tavsiye lütfen.

Yanıtlar:


153

İhtiyacınız olan anahtar --parents, örneğin:

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

tarGibi bir şey kullanın :

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

(Test edilmedi. Önce kuru bir çalışma yapın veya bir mockup senaryosunda deneyin.)


şaşırtıcı derecede iyi çalışıyor! Mac üzerinde: mkdir b; tar -c -f new.tar $ (kedi myP); katran -x -f new.tar -Cb /; #myP, kopyalanacak dosyaların listesini içeren bir metin dosyasıdır
alexey

4

İlk mkdir -pönce özyinelemeli üst yol oluşturma ile hedef klasörü oluşturmak için kullanın . Sonra içeriği hedef klasöre kopyalayın:

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

3
cp -P a/myProject/.project b

Daha man cpfazla bilgi için bkz .


Bu yardımcı görünmüyor. Yalnızca '.project'i kendisini b'ye kopyalar, ancak' myProject'i kopyalamaz.
dhblah

3

Cpio'yu find ile birlikte kullanıyorum. Burada açıklama .

Kullanım durumunuz için örnek:

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

Bu komut tüm dosyaları bulur /a/myProject/.project/ve kopyalar; yolu korurken içinde bulunan dosyaları da tutar.


1
.project, bir dosya değil dir!
ddbug

1

Ek olarak , çoğu iç dizinin kopyasını çıkarmamak için seçenek --parentseklenmesi gerekir.-r

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

Yani benim için çalışan komut

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


-3

Kullandığım --parentsile cpkomuta ve benimle perfeclty çalıştı. Daha fazla ayrıntı için her zaman kılavuzu kullanın. Teşekkür ederim.


3
Diğer 5 cevaba hiçbir şey eklemez.
Deer Hunter

Cevaplayıcılar, Eclipse'deki .project dosyasının bir dizin olduğunu unutmayın. Yani mkdir -pa / .project anlamsızdır.
ddbug
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.