あるプロジェクトから別のプロジェクトにファイルリストをコピーするシェル/ターミナル/bashコマンドまたはスクリプト

あるプロジェクトから別のプロジェクトにファイルリストをコピーするシェル/ターミナル/bashコマンドまたはスクリプト

独自のディレクトリにあり、次のファイル構造を持つmy-project /というプロジェクトがあるとします。

私のプロジェクト/
.
├── src
│   ├── index.html
│   ├── main.js
│   ├── normalize.js
│   ├── routes
│   │   ├── index.js
│   │   └── Home
│   │       ├── index.js
│   │       └── assets
│   ├── static
│   ├── store
│   │   ├── createStore.js
│   │   └── reducers.js
│   └── styles
└── project.config.js

それでは、独自のディレクトリにあり、my-projectと同じファイル構造を持っていますが、my-files-to-copyというファイルが添付されたmy-new-projectという新しいプロジェクトがあるとしましょう。

私の新しいプロジェクト/
.
├── src
│   ├── index.html
│   ├── main.js
│   ├── normalize.js
│   ├── routes
│   │   ├── index.js
│   │   └── Home
│   │       ├── index.js
│   │       └── assets
│   ├── static
│   ├── store
│   │   ├── createStore.js
│   │   └── reducers.js
│   └── styles
├── project.config.js
└── my-files-to-copy.txt # new file added to tree

my-new-project/はmy-project/とファイル構造は同じですが、ファイルの内容が異なります。

ここで、my-files-to-copy.txtにmy-project/からコピーし、my-new-project/の同じパスに書き、my-new-の既存のファイル/を上書きするファイルのリストが含まれているとします。プロジェクト/該当する場所にあります。

コピーしたいファイル.txt
src/main.js
src/routes/index.js
src/store/reducers.js
project.config.js

ターミナル/bash/シェルコマンドまたはスクリプトを使用してこれを行うにはどうすればよいですか?

私の考えでは、次のことができるようです。

cp my-project/src/main.js my-new-project/src/main.js
cp my-project/src/routes/index.js my-new-project/src/routes/index.js
cp my-project/src/store/reducers.js my-new-project/src/store/reducers.js
cp my-project/project.config.js my-new-project/project.config.js

たぶんどのようなrsyncコマンドが動作しますか?

ただし、ファイル数が増えると、この方法の効率が低下します。私は、各ファイルに対して別々のコマンドを書く必要なしに、ファイルのリスト(または少なくともスクリプト)を含むファイルを利用できるより効率的なソリューションを探しています。

答え1

それがすべてですcpio。ファイルリストをコピーしてください。私はいつも「in」と「out」の方向が混乱していると思いましたが、GNUは--create2つあります--extract

 cd your/source/dir
 cpio --create < my-files-to-copy.txt | (cd your/dest/dir && cpio --extract)

cpio所有権/タイムスタンプの保持などの項目を管理するためのさまざまなオプションがあります。マニュアルページがあなたを案内します。理解すべき重要な点は、cpio(a)ディレクトリをストリーム(コピーするファイルのリストなど)にコピーする場合、または(b)--make-directories抽出側でオプションを使用しない限り、ディレクトリが作成されないことです。

関連情報