SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

UNIXコマンド辞典

cp

ファイル/ディレクトリをコピーする

対応OS: linux , freebsd, solaris

2015/05/20 08:00

cp [-p] [-i|-f] [-R] [-v] [-d] [-s] [-u] FILE PATH
cp [-p] [-i|-f] [-R] [-v] [-d] [-s] [-u] FILE... DIR

 cpコマンドは、FILEに指定したファイルもしくはディレクトリをコピーします。PATHには、コピー後のファイルもしくはディレクトリのパスを指定します。

 また、単一もしくは複数のファイルのパスをFILE...に指定して、DIRに指定したディレクトリ内にコピーすることもできます。

オプション
① -p
コピー元の所有者ID、グループID、アクセス権、最終更新日時、最終アクセス日時をコピー元と同じにしてコピーします。通常は新規に作成したのと同じになります。
② -i
コピー先に同一名のファイルまたはディレクトリが存在する場合に、上書きするか否かを問い合わせます。
③ -f
コピー先に同一名のファイルやディレクトリが存在しても、問い合わせなしに上書きします。
注意

 コピー先に同一名のファイルやディレクトリが存在する場合で、オプション「-i」と「-f」のどちらも指定しなかった場合には、UNIXによって問い合わせの有無が異なります

④ -R
ディレクトリをコピーする場合に、ディレクトリの内容をすべてコピーします。
⑤ -v [Linux][FreeBSD]
処理内容を出力します。
⑥ -d [Linux]
コピー元がリンクファイルの場合は、通常リンク先のファイル(実体)をコピーしますが、このオプションを指定した場合は、リンクファイルをコピーします。
⑦ -s [Linux]
コピー元へのリンクファイルを作成します。
⑧ -u [Linux]
コピー先に同一名のファイルやディレクトリが存在する場合、最終更新日付が新しくなる場合にだけ上書きします。
引数
① FILE
コピー元のファイルまたはディレクトリのパスを指定します。ワイルドカードによる指定も可能ですが、ワイルドカードを使った指定の結果はひとつのファイルまたはディレクトリを表さないといけません。
② PATH
コピー先のファイルまたはディレクトリのパスを指定します。
③ FILE...
複数のコピー元のファイルのパスをスペースで区切って指定します。ワイルドカードによる指定も可能です。
④ DIR
コピー先のディレクトリのパスを指定します。FILE...に指定したファイル群は、このディレクトリ内に元のファイル名でコピーされます。
ファイルをコピーする
$ ls 
file01
$ cp file01 file01a
ファイル「file01」のコピーを「file01a」という名前で作成
$ ls -l
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 17:23 file01a
$
ファイルの情報を保持してコピーする
$ cp -p file01 file01b 
オプション「-p」を指定して、最終更新日時などの情報を保持してコピー
$ ls -l
合計12
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 17:23 file01a
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01b
$
同一名ファイルが存在する場合のコピー
$ ls -l 
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 17:23 file01a
$ cp file01 file01a
cp: 'file01a' を上書きしてもよろしいですか(yes/no)? y
上書きするかどうかの問い合わせ
「y」を入力すると上書き
「n」を入力すると何もしない
$ ls -l
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 17:34 file01a
$cp -f file01 file01a
オプション「-f」を指定して、問い合わせなしにコピー
$ ls -l
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 17:40 file01a
$
ディレクトリの内容をすべてコピーする
$ ls 
dir01
$ ls dir01
file11 file12
$ cp -Rv dir01 dir01a
オプション「-R」を指定して、ディレクトリの内容をすべてコピー
「-v」は処理内容を表示するオプション
'dir01' -> 'dir01a'
'dir01/file11' -> 'dir01a/file11'
'dir01/file12' -> 'dir01a/file12'
$
リンクファイルをコピーする
$ ls -l 
合計6
drwxrwxr-x 2 cmd cmd 4096 4月11 15:13 dir01
lrwxrwxrwx 1 cmd cmd 12 4月11 15:23 file11 -> dir01/file11
$ cp file11 file11a
$ ls -l
合計10
drwxrwxr-x 2 cmd cmd 4096 4月11 15:13 dir01
lrwxrwxrwx 1 cmd cmd 12 4月11 15:23 file11 -> dir01/file11
-rw-rw-r-- 1 cmd cmd 32 4月11 17:26 file11a
オプション「-d」を指定しなければリンク先をコピー
$ cp -d file11 file11b
$ ls -l
合計14
drwxrwxr-x 2 cmd cmd 4096 4月11 15:13 dir01
lrwxrwxrwx 1 cmd cmd 12 4月11 15:23 file11 -> dir01/file11
-rw-rw-r-- 1 cmd cmd 32 4月11 17:26 file11a
lrwxrwxrwx 1 cmd cmd 12 4月11 17:30 file11b -> dir01/file11
オプション「-d」を指定するとリンクファイルをコピー
$
リンクファイルを作成する
$ ls -l 
合計4
-rwxrwxrwx 1 cmd cmd 25 4月11 15:13 file01
$ cp -s file01 file01a
オプション「-s」を指定して、ファイル「file01」へのリンクファイル「file01a」を作成
$ ls -l
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
lrwxrwxrwx 1 cmd cmd 6 4月11 17:26 file01a -> file01
$
ファイルが新しくなる場合だけコピーする
$ ls -l 
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 17:25 file01a
$ cp -u file01 file01a
$ ls -l
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 17:25 file01a
既存の同名ファイルの方が新しいとコピーしない
$ cp -u file01a file01
$ ls -l
合計8
-rw-rw-r-- 1 cmd cmd 32 4月11 19:27 file01
既存の同名ファイルの方が古いとコピー
-rw-rw-r-- 1 cmd cmd 32 4月11 17:25 file01a
$
複数ファイルをまとめてコピーする
$ ls -l 
合計20
-rwxrwxr-x 1 cmd cmd 25 4月11 15:13 file01
-rwxrwxr-x 1 cmd cmd 25 4月11 15:25 file01a
-rw-rw-r-- 1 cmd cmd 32 4月11 15:30 file02
-rw-rw-r-- 1 cmd cmd 32 4月11 15:32 file02a
-rw-rw-r-- 1 cmd cmd 39 4月11 15:58 file03
$ mkdir dir01
$ cp file01* file02 file03 dir01
複数のファイルをディレクトリ「dir01」内にコピー
$ ls -l dir01
合計16
-rwxrwxr-x 1 cmd cmd 25 4月11 17:28 file01
-rwxrwxr-x 1 cmd cmd 25 4月11 17:28 file01a
-rw-rw-r-- 1 cmd cmd 32 4月11 17:28 file02
-rw-rw-r-- 1 cmd cmd 39 4月11 17:28 file03
$
HINT!

 lsコマンド・mkdirコマンド

UNIXコマンド辞典トップページに戻る

本コンテンツは「UNIXコマンド辞典 ビギナー編」(2003年)を元にWeb用に再編集したものです
All Contents copyright © 2003-2009 Odyssey Communications Inc., Shoeisha Co., Ltd.

開発者必携!VBAスキルを証明する資格「VBAエキスパート」

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング