Linuxでファイルを削除する方法|rmコマンドの使い方と主要オプションを解説

コマンドリファレンス

Linuxでファイルやディレクトリを削除するには、rm コマンドを使います。ファイル1つなら rm ファイル名、複数まとめてなら rm file1 file2、中身のあるディレクトリ(フォルダ)ごと消すなら rm -r ディレクトリ名 です。削除したファイルはゴミ箱を経由せず即座に消え、基本的に復元できません。まずは下の早見表で目的に合うコマンドを確認し、rm -rf のような強力なオプションを使う前には対象を必ず確認しましょう。

bashについて、基本的な考え方や使い方については bash から参照ください。

目的別 ファイル削除コマンド早見表

Linuxでファイルを削除する際によく使うコマンドを目的別にまとめました。詳しい説明は各見出しで解説します。

目的コマンド例説明
ファイルを1つ削除rm file.txt指定した1ファイルを削除する
複数ファイルを削除rm file1.txt file2.txtスペース区切りで複数ファイルを指定
フォルダ(ディレクトリ)を削除rm -r dir中身ごと再帰的に削除する
空のフォルダだけ削除rmdir dir中身が空の場合のみ削除できる安全な方法
確認しながら削除rm -i file.txt1件ずつ確認プロンプトを表示
確認なしで強制削除rm -f file.txt存在しないファイルも無視し即座に削除
拡張子を指定して一括削除rm *.logワイルドカードで一致するファイルをまとめて削除(事前に ls *.log で対象確認)

構文(Syntax)

rm [オプション] ファイル/ディレクトリ...

主なオプション一覧

オプション説明使用例
(なし)単一のファイルを削除rm file.txt
-i削除前に確認を求めるrm -i file.txt
-I3件以上・再帰削除の前に1回だけ確認を求めるrm -I *.log
-f確認せず強制的に削除し、存在しないファイルも無視するrm -f file.txt
-rディレクトリを再帰的に削除rm -r dir
-rfディレクトリを強制的に削除(最も危険)rm -rf dir
-d空のディレクトリを削除する(-r 不要)rm -d emptydir
-v削除したファイルを表示rm -v file.txt
--- で始まるファイル名を削除する際に使用rm -- -filename

実行例

ファイルを削除

rm file.txt

複数ファイルを削除

rm file1.txt file2.txt

削除時に確認する

rm -i important.txt

出力例:

rm: remove regular file 'important.txt'? y

フォルダ(ディレクトリ)を再帰的に削除

Linuxでフォルダごとファイルを削除するには -r(再帰)オプションを付けます。中身のファイル・サブディレクトリもすべて削除されるため、対象を必ず確認してから実行してください。

rm -r old_project

強制的にディレクトリごと削除

rm -rf /tmp/testdir

削除したファイルを表示

rm -v file.txt

出力例:

removed 'file.txt'

エラー例(存在しないファイル)

rm notfound.txt

出力例:

rm: cannot remove 'notfound.txt': No such file or directory

rm -rf の危険性と実行前の安全確認

rm -rf は確認なしでディレクトリごと強制的に削除する非常に強力なコマンドです。ワイルドカードや誤ったパス指定と組み合わさると、意図しないファイルまで一瞬で消えてしまい、基本的に復元できません。実行前には次の手順で対象を確認する習慣をつけましょう。

  1. pwd で現在地を確認する:意図したディレクトリにいるか確認してから操作します。
  2. ls で削除対象を確認するrm -rf の前に同じパスへ ls を実行し、消えるファイル・ディレクトリを目で確認します。
  3. 不安な場合は -iecho で試すrm -i で1件ずつ確認するか、コマンドの先頭に echo を付けて echo rm -rf ./対象/* のように展開結果だけを先に確認してから本番のコマンドを実行します。
pwd
ls 対象ディレクトリ
rm -rf 対象ディレクトリ

特に rm -rf / のようにルート直下やホームディレクトリを対象にすると、システムやユーザーデータ全体が消えてしまいます。多くの現代Linuxでは --no-preserve-root オプションなしにルートは削除できないよう保護されていますが、過信せず対象パスを毎回確認してください。

ワイルドカード(*)利用時の注意点

rm *rm *.log のようにワイルドカードを使うと、想定より多くのファイルが一致して削除されてしまうことがあります。安全に使うには次の点を守りましょう。

  • 削除前に ls で対象を確認するrm *.log の前に ls *.log を実行し、シェルが展開する一覧を目視で確認します。
  • -i オプションを併用するrm -i *.log にすると、一致したファイルごとに確認を求められます。
  • 隠しファイルの展開に注意するrm .* のような指定は .(カレントディレクトリ)や ..(親ディレクトリ)にも一致する場合があり、意図しない削除につながります。
ls *.log
rm -i *.log

ファイルが削除できないときの対処

Linuxでファイル削除がエラーになる代表的なケースと対処法です。

エラーメッセージ原因対処
Permission deniedファイルの所有者ではない、もしくはディレクトリに書き込み権限がない権限を確認し、必要ならsudo rmで実行する。所有者はls -lで確認できる
Directory not emptyrmdirで中身が残っているディレクトリを削除しようとした中身ごと削除するならrm -rを使う
Is a directoryファイル用の指定(-rなしのrm)でディレクトリを削除しようとした-rを付けて実行する
Device or resource busy削除対象がマウントポイントである、または別プロセスが使用中lsoffuserで使用中のプロセスを確認してから削除する
No such file or directoryパスや拡張子の指定間違い、既に削除済みlsでパスを再確認する

権限エラーが解決しない場合は、パーミッションの仕組みとchmodの使い方もあわせて確認してください。

rmdir・unlink・trash-cli・find -delete との使い分け

rm 以外にもファイル・ディレクトリを削除する方法があります。目的に応じて使い分けると、誤削除のリスクを減らせます。

コマンド用途特徴
rmファイル・ディレクトリの削除-r でディレクトリも再帰削除できる汎用コマンド
rmdir空ディレクトリの削除専用中身が残っているとエラーになり誤削除を防げる
unlink単一ファイル(リンク含む)の削除専用ワイルドカードや複数指定を受け付けないため誤爆しにくい
trash-cliゴミ箱に移動して削除誤って削除しても一定期間は復元できる安全策
find ... -delete条件に一致したファイルの一括削除事前に -print で対象を確認してから -delete に切り替えられる

rmdir は中身が空でない場合はエラーになるだけなので、空ディレクトリの掃除に向いています。rmdir のオプションや rm -r との使い分け、実行例はLinuxでディレクトリを削除する方法|rmdir・rm -rの使い方と注意点を解説で詳しく解説しています。

unlink は1つのファイルしか指定できないコマンドで、ワイルドカードで思わぬファイルを巻き込む心配がありません:

unlink file.txt

find-delete を組み合わせると、条件に一致したファイルだけを安全に削除できます。誤爆を防ぐため、まず -delete を付けずに対象を確認してから実行するのがおすすめです:

find . -name "*.tmp"          # まず対象を確認
find . -name "*.tmp" -delete  # 確認後に削除

より高度な検索条件との組み合わせは、findコマンドの使い方findコマンドとxargsの組み合わせ術で解説しています。

誤削除を防ぐヒント

  • rm はゴミ箱を経由せず即削除するため、基本的に 元に戻せません。重要なファイルは事前にバックアップを取りましょう。
  • 特に rm -rf / のようなコマンドはシステムを破壊するため絶対に実行してはいけません。
  • 誤削除防止のため、普段は alias rm='rm -i' と設定しておくことが推奨されます。
  • -r を使う際はディレクトリの中身もすべて消えるため注意が必要です。
  • シンボリックリンクを削除する場合、リンク先の実体ではなくリンク自体が消えることを確認しておきましょう。

よくある質問(FAQ)

Q. Linuxでファイルを削除する基本のコマンドは何ですか?

rm コマンドです。rm ファイル名 でファイルを1つ削除でき、ディレクトリごと削除する場合は rm -r ディレクトリ名 を使います。GUI環境であればファイルマネージャーの「削除」やゴミ箱への移動でも同様の操作ができます。

Q. rm で削除したファイルは復元できますか?

通常の rm では削除したファイルをゴミ箱に移動しないため、基本的に復元できません。重要なファイルは事前にバックアップを取るか、rm -i で確認しながら削除する習慣をつけましょう。誤削除が心配な場合は、trash-clirip などのゴミ箱系ツールを rm の代わりに使う方法もあります。

Q. rm -rf / を実行するとどうなりますか?

ルートディレクトリ以下のすべてのファイルを再帰的・強制的に削除しようとします。システムが起動不能になる危険な操作のため、絶対に実行しないでください。多くの現代Linuxでは --no-preserve-root オプションなしには実行できないよう保護されています。

Q. フォルダ(ディレクトリ)を削除するにはどうすればよいですか?

空のディレクトリは rmdir ディレクトリ名 で削除できます。中身ごと削除したい場合は rm -r ディレクトリ名 を使います。誤削除を防ぐために rm -ri ディレクトリ名 で確認しながら削除するのがおすすめです。

Q. 「Permission denied」でファイルを削除できないのはなぜですか?

削除対象のファイルがあるディレクトリに書き込み権限がない場合に発生します。ls -l で所有者とパーミッションを確認し、必要に応じて sudo rm を使うか、chmod で権限を変更してから削除してください。

Q. 特定の拡張子のファイルをまとめて削除するには?

ワイルドカードを使って rm *.log のように指定します。削除前に ls *.log で対象ファイルを確認してから実行すると安全です。

Q. rm と rmdir、unlink はどう違いますか?

rm はファイル・ディレクトリの両方を削除でき、-r を付けると中身ごと再帰的に削除します。rmdir は空のディレクトリしか削除できないため、中身が残っている場合はエラーになり誤削除を防げます。unlink は1つのファイルだけを厳密に削除するコマンドで、ワイルドカードや複数指定を受け付けないため誤爆が起きにくいという特徴があります。

関連記事

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント