まだらもよう

Qiitaに投稿できないメモ書きなど

cpコマンド

基本

$ cp [オプション] コピーしたいファイル コピー先

コピー先に同名ファイルがある場合、上書きされる。
コピー先にディレクトリを指定した場合、ディレクトリ下にコピーされる。コピー先ディレクトリが存在しない場合、作成される。

ディレクトリ内のファイル全部コピー

$ cp -a dir1/. dir2

rオプションとaオプションの違い

rは再帰的にコピーを行う。タイムスタンプや所有者が変わる。
aはディレクトリや属性などを保持してコピーする。タイムスタンプや所有者は変わらないし、再帰的にコピーもされる。


補足

$ cp *.html dir1

htmlファイルをdir1にコピーする。cp file1 file2 file3 dir1でfile1,2,3をまとめてコピーする(コピーしたいファイルを複数指定できる)。

$ cp -a dir1 dir2

ディレクトリごと中身のファイルをコピーできるが、dir2が存在した場合、dir2/dir1という構造になってしまう

$ cp -a dir1/. dir2

dir1/.でカレントディレクトリであることを示せば、dir2が存在しようとしまいとdir2のすぐ下にdir1のファイルがコピーされる

$ cp -a dir1/* dir2

ワイルドカードだと、ドットファイルがコピーされないほか、

$ cp -av dir1/* dir2
'dir1/dirA/' -> 'dir2'
'dir1/dirA/file' -> 'dir2/file'

サブディレクトリがあるとき構造が崩れるので辞めた方が良さげ