cpコマンドでファイルだけをまとめてコピーする

スポンサーリンク

はじめに

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

参考

タイトルとURLをコピーしました