目次
コピー
ファイルをコピーする(cp)
| cp コピー元 コピー先 |
$ cp test1.txt test2.txt
| 1.コピー先のファイル(test2.txt)がない場合 | test1.txtファイルの内容でtest2.txtを新規作成する |
| 2.コピー先のファイル(test2.txt)がある場合 | test1.txtファイルの内容でtest2.txtを上書きする |
ファイルをコピーする+上書きの確認(cp -i)
$ cp -i test1.txt test2.txt
cp: `test2.txt' を上書きしますか? y
コピー先のファイルが存在する場合、確認を行います。
上書きする場合はyを、上書きしない場合はnを入力します。
複数のファイルをコピーする(cpとアスタリスク(*))
$ pwd
/home/test/test1
$ ls -l
drwxrwxr-x 2 test test 6 1月 20 22:08 dir1
-rw-rw-r-- 1 test test 0 1月 20 22:00 test1.txt
-rw-rw-r-- 1 test test 0 1月 20 22:00 test2.txt
$ cp /home/test/test1/test*.txt dir1
ls -l /home/test/test1/dir1
-rw-rw-r-- 1 test test 0 1月 20 22:09 test1.txt
-rw-rw-r-- 1 test test 0 1月 20 22:09 test2.txt
$ cp /home/test/test1/test*.txt /home/test/test1/dir1
7行目と11行目は同じコピーの処理です。
ディレクトリごとコピーする(cp -r)
$ cp -r /home/test/test1/dir1 /home/test/test1/dir2
| 1.コピー先のディレクトリ(dir2)がない場合 | dir1の内容を持つdir2が新規作成される |
| 2.コピー先のディレクトリ(dir2)がある場合 | dir2配下にdir1が作成される /home/test/test1/dir2/dir1 |
タイムスタンプや所有者などの属性をなるべく保持してコピー(cp -p)
cp -p file1 file2
タイムスタンプ・パーミッション・所有者(※)・グループを保持します。
※rootで実行した場合は所有者も完全に保持される、一般ユーザーは自分が所有するファイルのみ
完全に近いコピーをしたい場合は、cp -aを使用します。
ディレクトリを属性ごとコピー(cp -a)
cp -a dir1 dir2
cp-aは-r(再帰コピー)を含むため、ディレクトリ全体をそのままコピーできます。タイムスタンプ・パーミッション・所有者・シンボリックリンクなどの属性も保持されます。
バックアップ用途でよく使います。
コピー先が存在する場合は上書きしない(cp -n)
cp -n file1 file2
削除
ファイルを削除する(rm)
$ rm test3.txt
ファイルを削除する+削除の確認(rm -i)
$ rm -i test1.txt
rm: 通常ファイル `test1.txt' を削除しますか? y
削除する前に確認を行います。
削除する場合はyを、削除しない場合はnを入力します。
ディレクトリごと削除する(rm -r)
$ rm dir1
rm: `dir1' を削除できません: ディレクトリです
$ rm -r dir1
rmのみの場合、2行目のメッセージが出て削除できません。
rm -ri dir1のように-iを付けると削除前に確認できます。
特にrm -rfは確認なしで削除するため、本番環境では慎重に使う必要があります。
-fは強制削除オプションです。
移動
ファイルを移動する(mv)
| mv 移動元ファイル/ディレクトリ 移動先のパス |
$ mv test1.txt /home/test/test1/dir2/
| 1.移動先の同名のファイルがない場合 | 現ディレクトリのtest1.txtを/home/test/test1/dir2/に移動する。 |
| 2.移動先の同名のファイルがある場合 | 上書きされます。 →mv -i にすると上書きの場合に確認のメッセージが表示されます。 |
複数のファイルとディレクトリを移動する(mv)
$ mv /home/test/test1/dir1/* /home/test/test1/dir2/
/home/test/test1/dir1/配下にあるすべてのファイルとディレクトリを/home/test/test1/dir2/配下に移動します。
【注意】*は通常、.envや.bashrcのようなドットで始まる隠しファイルを対象にしません。
→この場合、rsyncを使います。
$ rsync -av --remove-source-files dir1/ dir2/
1.dir1/の中身をdir2/にコピー
2.コピーが成功したファイルだけ、dir1/から削除
移動元のdir1のディレクトリ自体は残ります。
転送に成功したファイルは削除されます。
→途中で止まってもデータ消失しにくいです。
- 隠しファイルも含む
- 属性保持
存在しないディレクトリに移動させようとした時(mv)
$ mv /home/test/test1/dir1/* /home/test/test1/dir3/
mv: 宛先の `/home/test/test1/dir3/' はディレクトリではありません
移動先のディレクトリが存在しないときは移動できません。
ファイルを移動する+上書きの確認(mv -i)
$ mv -i test1.txt /home/test/test1
mv: `/home/test/test1/test1.txt' を上書きしますか? y
移動先のファイルが存在する場合、確認を行います。
上書きする場合はyを、上書きしない場合はnを入力します。
ファイルを強制的に上書きする(mv -f)
$ mv -f test1.txt /home/test/test1
移動先のファイルが存在する場合、強制的に上書きします。
ファイル名を変更する(mv)
| mv 変更前ファイル名 変更後ファイル名 |
$ mv test1.txt test9.txt
| 1.同名のファイルがない場合 | ファイル名を変更します。 |
| 2.同名のファイルがある場合 | 上書きされます。 →mv -i にすると上書きの場合に確認のメッセージが表示されます。 |
ディレクトリ
ディレクトリを作成する(mkdir)
| mkdir ディレクトリ名 |
$ mkdir test
testというディレクトリを作成します。
階層のディレクトリを作成する(mkdir -p)
$ mkdir test1/test2
mkdir: ディレクトリ `test1/test2' を作成できません: そのようなファイルやディレクトリはありません
$ mkdir -p test1/test2
1行目のようにmkdirのみでは階層構造のディレクトリは作成できません。
3行目のようにオプションの-pをつけると作成できます。
home/testで上記コマンドを実行した場合、
/home/test/test1/test2が作成されます。
関連の記事
