はじめに
cp
コマンドでファイルをまとめてコピーする方法を紹介します。
ファイルだけをコピーする
まずは、ファイルだけをコピーするコマンドを紹介します。
find
コマンドを使ってファイルだけを取得し、-exec
オプションでcp
コマンドを実行して、ファイルだけをコピーします。-maxdepth 0
とすることで、指定したディレクトリのファイルだけをコピーできます。
find src/* -type f -maxdepth 0 -exec cp {} dst/ \;
cpコマンドだけコピーすると
cp
コマンドだけでコピーすると、コピー自体はできてしまいますが、エラーメッセージとエラーコードが返ってきてしまいます。
❯ tree
.
├── dst
└── src
├── src1
│ └── test3.txt
├── test1.txt
└── test2.txt
❯ cp src/* dst/
cp: src/src1 is a directory (not copied).
❯ echo $?
1
❯ tree
.
├── dst
│ ├── test1.txt
│ └── test2.txt
└── src
├── src1
│ └── test3.txt
├── test1.txt
└── test2.txt
実際にファイルだけをコピーしてみる
find
コマンドと組み合わせて実行すると、エラーメッセージもエラーコードもなしで実行できます。
❯ tree
.
├── dst
└── src
├── src1
│ └── test3.txt
├── test1.txt
└── test2.txt
❯ find src/* -type f -maxdepth 0 -exec cp {} dst/ \;
❯ echo $?
0
❯ tree
.
├── dst
│ ├── test1.txt
│ └── test2.txt
└── src
├── src1
│ └── test3.txt
├── test1.txt
└── test2.txt