web-dev-qa-db-ja.com

フォルダの内容だけでなく、フォルダをcpするにはどうすればよいですか?

私がこのようなフォルダ構造を持っているとしましょう:

/parentFolder/
  folder1/
    folder1.1/
      file1
  folder2/
    file2

Folder1.1内のfolder2をコピーして、file2も

/parentFolder/folder1/folder1.1/folder2/file2

つまり、フォルダ構造は次のようになります。

/parentFolder/
  folder1/
    folder1.1/
      folder2/
        file2
      file1
  folder2/
    file2

私が行くだけならcp -R /parentFolder/folder2 /parentFolder/folder1/folder1.1次に、folder2のcontentをコピーしますが、folder2もコピーしたいと思います。

関連する質問:答えはmvにも当てはまりますか?

1
hobbes3

cp -R parentFolder/folder2 parentFolder/folder1/folder1.1/folder2

6
w0rldart

どのcpを使用していますか? UNIXツールは、システムごとに似ていますが、状況によっては動作が異なる場合があります。

GNU cpはあなたが望む振る舞いをします。 BSD cpには、説明した動作があります。最初の引数からスラッシュを削除して、次のように記述してみてください。

cp -R /parentFolder/folder2 /parentFolder/folder1/folder1.1

のではなく:

cp -R /parentFolder/folder2/ /parentFolder/folder1/folder1.1

ウィキペディアによると (1) 、これはBSD cpがあなたが望むことをする方法です。

1
njsg

この種のアクションにはrsyncを使用することを好みます。ファイルをコピーするだけでなく、アクセス許可をコピーして、従来のcpよりも転送速度を向上させることができます。

末尾の/目的地でのあなたの要件にとって重要です。

次のようなものを試してください:

rsync -aHSv /parentFolder/folder2 /parentFolder/folder1/
1
smujushi