リストのディレクトリを再帰的にコピーする方法はmy-files-to-copy.txt
?
cd my/source/dir
cpio --create < my-files-to-copy.txt | (cd my/dest/dir && cpio --extract)
コピーしたいファイル.txt
src/main.js
src/routes/index.js
src/my-app/ # a directory with it's own child tree I want to recursively copy
ベストアンサー1
cpio
リストファイルを「前処理」する方法でディレクトリパス名を検出し、それを繰り返してその下のすべてのファイルのパス名を抽出する追加のスクリプトを実行しない限り、実際にこれを行う方法はありません。
次のような他のツールを使用する方がはるかに簡単です(rsync
後で追加情報を参照してください!)。-r
--files-from
rsync -a --files-from=my-files-to-copy.txt -r my/source/dir my/dest/dir
...またはpax
(標準ユーティリティ):
( cd my/source/dir && pax -w ) <my-files-to-copy.txt |
( cd my/dest/dir && pax -r )
...またはpax
ターゲットディレクトリの絶対パスを提供できる場合:
( cd my/source/dir && pax -rw /my/dest/dir ) <my-files-to-copy.txt
...またはBSD tar
(GNUを使用-T
または--files-from=
置換):-I
tar
tar -c -f - -C my/source/dir -I my-files-to-copy.txt |
tar -x -f - -C my/dest/dir
これらすべてがmy-files-to-copy.txt
現在のディレクトリにあると仮定し、そのディレクトリはそのディレクトリとは異なる場合がありますmy/source/dir
。