cp

ファイルをコピーしたいときに使うコマンドだが注意しなければいけないのは、コピーして新しくできたファイル名がすでに存在するファイル名だった場合。すでに存在するファイルを上書きしても良いという状況は滅多にないと思う。

共通

cp が使える状態か確認

which cp

バージョン確認

cp --version

注意したいのは Mac と Linux(Ubuntu) とではオプションの付け方が若干ことなる。ここでは両方でうごくようなオプションの書き方を紹介

ファイル構造について

下記のようなファイル構造が存在した場合

$ tree
.
├── samplecopy1.txt
├── sampledir
│   ├── copy1.txt
│   ├── copy2.txt
│   └── copy3.txt
├── sampledir2
├── samplenestdir
│   ├── copy1.txt
│   ├── copy2.txt
│   ├── copy3.txt
│   └── one
└── samplenestdir2

5 directories, 7 files

上書きせずにひとつだけコピー

samplecopy1.txt ファイルをコピーして samplecopy2.txt で保存 samplecopy2.txt という名前のファイルが存在する場合は実行しない。

cp -n samplecopy1.txt samplecopy2.txt

上書きせずに複数ファイルコピー

sampledir ディレクトリとその中にある copy1.txt, copy2.txt, copy3.txt の3つのファイルを sampledir2 ディレクトリのなかにコピーする

cp -n sampledir/* sampledir2

上書きせずに再帰的に複数ファイルコピー

sampledir ディレクトリとその中にある one ディレクトリと copy1.txt, copy2.txt, copy3.txt の3つのファイルを sampledir2 ディレクトリのなかにコピーする

cp -nR samplenestdir/* samplenestdir2