私はEclipseプロジェクトと ".project"ファイルを持っています。ディレクトリ構造は 'myProject/.project
'のようになります。これらの「.project」ファイルを別のディレクトリにコピーしたいのですが、囲んでいるディレクトリ名は保持したいです。
「a/myProject/.project
」があるとしましょう。「myProject/.project
」を「b
」にコピーしたいので、「b/myProject/.project
」ですが、「b/myProject
'は存在しません。私が試してみると:
cp -r ./myProject/.project ../b
「myProject」ディレクトリなしで、「。project」ファイルのみをコピーします。お知らせ下さい。
必要なスイッチは--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
rsync -R
を使用することもできます。これは、cp --parents
が利用できないOSXで機能します。
tar
は次のように使用します。
mkdir b; tar cpf - myProject/ | tar xpf - -C b/
(テストされていません。最初に予行演習を行うか、モックアップシナリオで試してください。)
最初の使用mkdir -p
再帰的な親パスを作成して宛先フォルダーを作成します。次に、コンテンツを宛先フォルダーにコピーします。
mkdir -p b/myProject/.project
cp -r a/myProject/.project/file b/myProject/.project
cp -P a/myProject/.project b
見る man cp
詳細については。
Cpioをfindと組み合わせて使用しています。 説明はこちら 。
ユースケースの例:
find /a/myProject/.project/ -type f | cpio -p -dumv /b/.
このコマンドは、/a/myProject/.project/
内のすべてのファイルを検索し、パスを保持しながら、その中に含まれているファイルをコピーします。
--parents
に加えて、ほとんどの内部ディレクトリのコピーを省略しないようにするために、-r
オプションを追加することも必要です。
$ cp --parents test/1/.moo test2/
cp: omitting directory ‘test/1/.moo’
だから私のために働くコマンドは
$ cp --parents -r test/1/.moo test2/
cp --parents
にバグがあるようです。 --parents
を--preserve=all
とともに使用すると、SOMEの宛先ディレクトリの日付と時刻の属性が保持されませんでした。
次のリンクは、これがバグであることを確認しているようです: bug#8767:cp:--preserve = allは、-parentが使用されている場合、親に対して機能しません 。
そのため、--parents
や--preserve=all
などの-p
を使用すると、保持されている属性に依存できないように見えます。