Linuxでファイルを保存するディレクトリパスをコピーする方法は?


88

Eclipseプロジェクトとその中に ".project"ファイルがあり、ディレクトリ構造は ' myProject/.project'のように見えます。これらの「.project」ファイルを別のディレクトリにコピーしたいのですが、囲んでいるディレクトリ名を保持したいです。

a/myProject/.project」があり、「myProject/.project」を「b」にコピーしたいので、「」になりますb/myProject/.projectが、「b/myProject」は存在しません。私が試してみると:

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

「myproject」ディレクトリなしで、「。project」ファイル自体のみをコピーします。お知らせ下さい。

回答:


153

必要なスイッチは--parents、例えば:

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

tar次のようなもので使用します:

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

(テストされていません。最初に予行演習を行うか、モックアップシナリオで試してください。)


驚くほどうまく機能します!Macの場合:mkdir b; tar -c -f new.tar $(cat myP); tar -x -f new.tar -C b /; #myPは、コピーするファイルへのパスのリストを含むテキストファイルです
-alexey

4

最初にmkdir -p、再帰的な親パスの作成を使用して宛先フォルダーを作成します。次に、コンテンツを宛先フォルダーにコピーします。

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

3
cp -P a/myProject/.project b

詳細についてはman cp、を参照してください。


これは役に立たないようです。「.project」自体をbにコピーするだけですが、「myProject」はコピーしません。
dhblah

3

findと組み合わせてcpioを使用します。ここで説明

ユースケースの例:

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

このコマンドは/a/myProject/.project/、パスを保持しながら、その中に含まれるすべてのファイルを見つけてコピーします。


1
.projectはdirではなくファイルです!
ddbug

1

さらに、ほとんどの内部ディレクトリのコピーを省略しないようにするために--parents-rオプションを追加する必要もあります

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

だから私のために働くコマンドは

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

0

にバグがあるように見えることに注意してくださいcp --parents--parentsと共に使用 すると--preserve=all、一部の宛先ディレクトリの日付と時刻の属性が保持されませんでした。

次のリンクは、これがバグであることを確認しているようです:bug#8767:cp:--preserve = allは、--parentが使用されている場合、親に対して機能しません

したがって--parents--preserve=allor などと一緒に使用すると、属性が保持されていることに依存できないように見えます -p


-3

--parentscpコマンドで使用し、私と一緒に完璧に働きました。詳細については、常にマニュアルを使用してください。ありがとうございました。


3
他の5つの回答には何も追加しません。
ディアハンター

回答者は、Eclipseの.projectはディレクトリではなくファイルであることに注意してください。したがって、たとえばmkdir -pa / .projectは意味がありません。
ddbug
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.