duyojiぶろぐ

技術系ときどき日常系

テキストファイルの内容を元にファイルをコピーする

files.txt内に1行毎に書かれているファイルを特定ディレクトリにコピー(ディレクトリ構造を維持した状態で)


Mac OSX

$ cat files.txt | xargs -I dest_dir -J % rsync -R % dest_dir/

Linux(CentOS)

$ mkdir -p dest_dir; cat files.txt | awk '{print $1}' | xargs  cp -p --parents --target-directory=dest_dir/

files.txt

dir1/dir2/text1.txt
dir1/dir2/dir3/test2.txt

コマンド叩く前

.
├── dir1
│   └── dir2
│       ├── text1.txt
│       └── dir3
│           └── test2.txt
└── files.txt

コマンド叩いた後

.
├── dest_dir
│   └── dir1
│       └── dir2
│           ├── text1.txt
│           └── dir3
│               └── test2.txt
├── dir1
│   └── dir2
│       ├── text1.txt
│       └── dir3
│           └── test2.txt
└── files.txt

gitで特定のリビジョン以降の差分ファイルを取得同じディレクトリ構造でコピー

Mac OSX

$ git diff revision HEAD --name-only | xargs -I dest_dir -J % rsync -R % dest_dir/

Linux(CentOS)

$ mkdir -p dest_dir; git diff revision HEAD --name-only | awk '{print $1}' | xargs  cp -p --parents --target-directory=dest_dir/