閉じる

Linuxのファイル操作基本コマンド解説:コピー(cp)・移動・名前変更(mv)の効率的な使い方

Linuxサーバーの管理や開発現場において、コマンドラインでのファイル操作は避けて通れない基本スキルです。

GUIでの操作に慣れている方にとって、黒い画面(ターミナル)での操作は一見難解に感じるかもしれませんが、Bashコマンドをマスターすることで、大量のファイル処理や自動化を劇的に効率化できるようになります。

本記事では、Linux操作の根幹を支える「cp(コピー)」と「mv(移動・名前変更)」に焦点を当て、2026年現在の開発環境でも通用する効率的な使い方や、安全に操作するためのテクニックを詳しく解説します。

Linuxファイル操作の基本:cpとmvの役割

Linuxのファイルシステムにおいて、ファイルやディレクトリを操作するための最も頻繁に使用されるコマンドがcp(copy)とmv(move)です。

これらのコマンドは非常にシンプルですが、強力なオプションを組み合わせることで、複雑なバックアップ作業やデータ整理を一行のコマンドで完結させることができます。

まず、Bashにおけるこれらのコマンドの基本的な役割を整理しましょう。

コマンド役割主な用途
cpファイル・ディレクトリの複製バックアップ作成、設定ファイルの雛形コピー
mvファイル・ディレクトリの移動データの整理、ディレクトリ構造の変更
mvファイル・ディレクトリの名前変更同一ディレクトリ内でのリネーム操作

Bashでは、「名前変更」専用のコマンドは標準では存在せず、移動コマンドであるmvがその役割を兼ねているのが大きな特徴です。

この仕組みを理解することが、Linux操作に習熟するための第一歩となります。

cpコマンドでファイルをコピーする

cpコマンドは、指定したソース(コピー元)をターゲット(コピー先)に複製します。

元のファイルを保持したまま新しい場所に同じ内容を作成するため、設定変更前のバックアップなどで頻繁に利用されます。

基本的な使い方

最も単純な使い方は、コピー元とコピー先を指定する形式です。

Shell
# sample.txtをsample_backup.txtという名前でコピー
cp sample.txt sample_backup.txt

# sample.txtをbackupディレクトリの中にコピー
cp sample.txt backup/
Shell
# ファイルの存在を確認
ls -l
# 出力結果
# -rw-r--r-- 1 user user 1024 May  6 10:00 sample.txt
# -rw-r--r-- 1 user user 1024 May  6 10:05 sample_backup.txt

ディレクトリを丸ごとコピーする(-rオプション)

ディレクトリをコピーする場合、中身のファイルも含めてコピーするために-r(recursive: 再帰的)オプションが必須です。

これを忘れるとエラーが発生し、コピーに失敗します。

Shell
# srcディレクトリをdestディレクトリとしてコピー
cp -r src/ dest/

ディレクトリ操作時に「-r」を忘れると、”cp: -r not specified; omitting directory” というエラーが表示されるため、常に意識しておく必要があります。

属性を保持してコピーする(-pオプション)

通常のコピーでは、コピー先のファイルの所有者や作成日時は「コマンドを実行した時刻」に更新されます。

しかし、システムのバックアップや移行作業では、元のパーミッションやタイムスタンプを維持したい場合があります。

その際は-p(preserve)オプションを使用します。

Shell
# 権限や更新日時を維持したままコピー
cp -p config.conf config.conf.bak

さらに詳細な属性(所有者、グループ、リンクなど)をすべて保持したい場合は、-a(archive)オプションを使用するのが一般的です。

これは-dR --preserve=allと同等の意味を持ちます。

上書き確認を行う(-iオプション)

コピー先に同名のファイルが存在する場合、デフォルトでは警告なしに上書きされます。

これを防ぐには-i(interactive)オプションを付与します。

Shell
cp -i original.txt existing.txt
# 出力結果
# cp: overwrite 'existing.txt'?

ここで y を入力すれば上書き、n を入力すれば中止となります。

誤操作によるデータ消失を防ぐため、重要な環境ではエイリアスを設定して常時有効にすることも検討してください。

mvコマンドで移動と名前変更を行う

mvコマンドは、ファイルやディレクトリの「場所」を移動させるコマンドですが、Linuxの世界では「名前の変更」も移動の一種として扱われます。

ファイルの場所を移動する

ファイルを別のディレクトリへ移動させる基本的な書き方は以下の通りです。

Shell
# report.pdfをdocumentsディレクトリへ移動
mv report.pdf documents/

# 複数のファイルを一度に移動
mv file1.txt file2.txt /home/user/backup/

複数のファイルを指定した場合、最後の引数が移動先のディレクトリである必要があります。

ファイルの名前を変更する

同一ディレクトリ内で、移動先として新しいファイル名を指定すると「名前変更(リネーム)」になります。

Shell
# old_name.txtをnew_name.txtに変更
mv old_name.txt new_name.txt

この操作は非常に高速です。

なぜなら、Linux内部ではデータの実体を動かしているのではなく、ファイルシステム上のインデックス(inode)が参照する名前を書き換えているだけだからです。

上書きの制御オプション

mvコマンドにも安全のためのオプションがいくつか存在します。

  • -i:上書き前に確認メッセージを表示する。
  • -n:移動先に同名ファイルがある場合、上書きせず移動をスキップする(no clobber)。
  • -f:確認なしで強制的に上書きする(force)。
Shell
# 移動先に同名ファイルがあっても上書きしない
mv -n source.txt destination/

ディレクトリの移動と名前変更

mvコマンドはcpとは異なり、ディレクトリを扱う際にも特別なオプション(-rなど)を必要としません

ファイルと同じ感覚でディレクトリを移動したり、名前を変更したりできます。

Shell
# project_v1ディレクトリをproject_v2にリネーム
mv project_v1 project_v2

# workディレクトリをarchiveの下に移動
mv work/ archive/

効率を劇的に高めるBashのテクニック

コマンドを一つずつ打つのは非効率です。

Bashに備わっている機能を活用することで、数百のファイルを一瞬で操作できるようになります。

ワイルドカードの活用

特定のパターンに一致するファイルをまとめてコピー・移動する際に便利です。

  • *:任意の文字列(0文字以上)
  • ?:任意の1文字
  • []:括弧内のいずれかの1文字
Shell
# 拡張子が.logのファイルをすべてlogsディレクトリへ移動
mv *.log logs/

# image01.jpg, image02.jpgなどをまとめてコピー
cp image0?.jpg backup/

ブレース展開(Brace Expansion)

Bash固有の強力な機能に「ブレース展開」があります。

これを使うと、共通する文字列をまとめて記述できます。

Shell
# config.phpをconfig.php.bakとしてコピー
cp config.php{,.bak}

# 実行されるコマンドのイメージ
# cp config.php config.php.bak

cp original.txt{,.old} という書き方は、タイピング量を減らすだけでなく、ファイル名の入力ミスを防ぐ効果もあります。

また、連続した数値や文字の生成も可能です。

Shell
# file1.txt, file2.txt, file3.txtを生成
touch file{1..3}.txt

# それらを一括でバックアップディレクトリへ移動
mv file{1..3}.txt backup/

中間ディレクトリの自動作成

コピー先に深い階層のディレクトリを指定したい場合、通常は事前にmkdir -pで作成しておく必要があります。

しかし、モダンな開発環境ではパイプや他のツールと組み合わせることも多いため、ディレクトリ構成の確認は怠らないようにしましょう。

安全な運用のためのTips

Linuxのコマンドライン操作には「ゴミ箱」という概念がありません。

一度実行した削除(rm)や不適切な上書きは、取り消すことが困難です。

そのため、以下の習慣を身につけることを推奨します。

エイリアスの設定

.bashrc などの設定ファイルに、誤操作防止のためのエイリアスを追記しておくと安心です。

Shell
# ~/.bashrc に追記
alias cp='cp -i'
alias mv='mv -i'

これにより、常に上書き確認が行われるようになります。

一時的にエイリアスを無効化して実行したい場合は、コマンドの前にバックスラッシュを付けて \cp と入力するか、フルパス(/bin/cp)で実行します。

実行前のシミュレーション(-vオプション)

何が起きているかを詳しく知りたい場合は、-v(verbose)オプションを付けましょう。

どのファイルがどこへ移動したかを逐一出力してくれます。

Shell
mv -v *.txt documents/
# 出力結果
# renamed 'note.txt' -> 'documents/note.txt'
# renamed 'todo.txt' -> 'documents/todo.txt'

大量・大容量ファイルの扱いはrsyncも検討

数ギガバイトに及ぶ巨大なディレクトリのコピーや、ネットワーク越しにファイルを同期する場合は、cpよりもrsyncコマンドの方が適している場合があります。

rsyncは差分転送が可能であり、途中で中断しても再開できるメリットがあります。

まとめ

本記事では、Linux操作の基本であるcpコマンドとmvコマンドの使い方について詳しく解説しました。

  • cpはファイルの複製を行い、ディレクトリ操作には-r、属性維持には-p-aを使う。
  • mvは移動と名前変更の両方を担い、オプションなしでディレクトリを扱える。
  • ワイルドカードやブレース展開を駆使することで、複雑な一括操作が可能になる。
  • 誤操作を防ぐために-iオプションやエイリアス設定を活用する。

これらのコマンドは、2026年においてもインフラエンジニアやソフトウェア開発者にとって必須の道具です。

基本をしっかりと押さえつつ、便利なオプションを使いこなすことで、より迅速かつ安全なシステム管理を実現してください。

まずは手元のテスト環境で、ブレース展開などのテクニックを実際に試してみることから始めましょう。

URLをコピーしました!