mvでファイルを移動する
コピーしてから消す、を 2 回に分けない
先月のログを保管用のフォルダにまとめたい。ファイル名の付け方をあとから直したい。どちらも「複製してから元を消す」でも実現できますが、2 手に分けると、途中で失敗したときに中途半端な状態が残ります。mv はこれを 1 回で終わらせます。
ターミナル
mv /tmp/access_2026_05.log /tmp/archive/移動先にディレクトリを指定すると、その中へ入ります。元の場所からは消えるので、後片付けが要りません。
名前を変えるのと、場所を変えるのは同じこと
ターミナル
mv /tmp/archive/access_2026_05.log /tmp/archive/access_may.log移動先にファイル名を書くと、名前が変わります。移動と改名で別のコマンドを覚える必要はありません。Linux から見ると、ファイルの居場所は「どのディレクトリに、どの名前で載っているか」でしかないので、どちらも同じ操作になります。
同じディスクの中で動かす限り、mv はこの載せ替えだけで済みます。何ギガバイトあっても一瞬で終わるのはそのためです。逆に別のディスクへ動かすときは、内部でコピーと削除が走るので時間がかかります。
| 観点 | cp | mv |
|---|---|---|
| 元のファイル | 残る | 消える |
| ディレクトリ | -r が要る | そのままでよい |
| 同じディスク内の速さ | 中身の量だけかかる | ほぼ一瞬 |
書き間違えると、ファイルが 1 つにまとまる
mv の事故で多いのは、移動先の書き方です。移動先のディレクトリ名を打ち間違えると、そんな名前のディレクトリは存在しないので、移動ではなく改名として解釈されます。対象が 1 つだったときは、エラーも出ないまま名前だけ変わり、ファイルが消えたように見えます。
防ぎ方は 2 つあります。1 つは、移動先のディレクトリを書くときに末尾へ / を付けること。存在しなければその場でエラーになるので、間違いに気づけます。もう 1 つは、実行前に移動先が実在するかを見ることです。
ターミナル
ls -d /tmp/archive/
# /tmp/archive/同じ名前のファイルが移動先にある場合、mv は黙って上書きします。心配なときは -i を付けると、そのときだけ確認を求めてきます。
課題
- mv を使う
- before.txt が消え after.txt だけになる