【 rm 】 ファイルやディレクトリの削除 【 Linuxコマンドまとめ 】

「Linuxコマンドまとめ」カテゴリでは、Linuxのコマンドについて、基本的な実行例とオプションを分かりやすくまとめます。

rm」はファイルやディレクトリの削除を行うコマンドです。

rmコマンドの基本的な使い方

mvコマンドの基本書式は、以下の通りです。

rm [オプション] 削除するファイル名

以下の例は、カレントディレクトリのfile1.txtを削除します。

rm file1.txt

もちろん、フルパスで指定することもできます。以下は、/tmp/file1.txtを削除する例です。

rm /tmp/file1.txt

複数のファイルを削除する

複数のファイルを一度に削除することもできます。以下は、file1.txtとfile2.txtを一度に削除する例です。

rm file1.txt file2.txt

パス名の展開を利用して複数のファイルを削除する

複数のファイルを削除する際、よく使われるのが「シェルによるパス名の展開」です。たとえば以下のコマンドを実行すると、カレントディレクトリにある「.txt」で終わるファイルをすべて削除します。

rm *.txt

パターンの指定を間違うと、消してはいけないファイルまで削除してしまうことがあります。気をつけて実行するようにしてください。

より複雑な条件を指定してマッチングさせることもできます。シェルによるパス名の展開については、以下の記事を参照してください。

rmコマンドの主なオプション

-r : ディレクトリであっても中身も含めて削除する(再帰的に削除する)

rmコマンドは、オプションなしでディレクトリを削除しようとしても、以下のようにエラーを返します。

$ rm dir1
rm: 'dir1' を削除できません: ディレクトリです

ディレクトリを丸ごと削除するには、以下のように「-r」オプションを使います。

$ rm -r dir1

このコマンドを実行すると、dir1の中にあるファイルやディレクトリも削除されます。たとえば、「dir1/dir2/dir3/di4/dir5」というような階層でディレクトリが作られていた場合、これら全てのディレクトリと中にあるファイルが削除されます。

-i : 削除する時に毎回確認する

rmコマンドは、実行すればすぐにファイルを削除するのがデフォルトの動作です。「-i」オプションをつけると、以下のように「削除しますか?」と確認されます。この場合、「y」を入力してEnterを押すと、削除が実行されます。

$ rm -i file1.txt file2.txt
rm: 通常ファイル 'file1.txt' を削除しますか? y
rm: 通常ファイル 'file2.txt' を削除しますか? y

他の文字を入力してEnterを押しても削除されません。ただし、「y」から始まる単語を入力すると削除されます(「yes」でも「yamete」でも)。

-f : あらゆる確認を行わずに削除する

rmコマンドは通常、確認を行わずにファイルを削除しますが、書き込みフラグの無いファイルを指定した場合は「削除しますか?」と確認されます。「-f」オプションをつけると、書き込みフラグの無いファイルを指定した場合も、確認せずに削除します。また、このオプションを指定した場合、存在しないファイルを指定してもエラーを出力しません。

-v : 削除処理の内容を出力する

「-v」オプションをつけると、以下のように処理の内容を出力します。

$ rm -rv file1.txt file2.txt dir1/
'file1.txt' を削除しました
'file2.txt' を削除しました
'dir1/a_4' を削除しました
'dir1/a_9' を削除しました
'dir1/a_3' を削除しました
'dir1/a_5' を削除しました
'dir1/a_8' を削除しました
'dir1/a_6' を削除しました
'dir1/a_0' を削除しました
'dir1/a_1' を削除しました
'dir1/a_7' を削除しました
'dir1/a_2' を削除しました
removed directory 'dir1/'

rmコマンドのヘルプ

使用法: rm [オプション]... [ファイル]...
Remove (unlink) the FILE(s).

  -f, --force           ignore nonexistent files and arguments, never prompt
  -i                    prompt before every removal
  -I                    prompt once before removing more than three files, or
                          when removing recursively; less intrusive than -i,
                          while still giving protection against most mistakes
      --interactive[=WHEN]  prompt according to WHEN: never, once (-I), or
                          always (-i); without WHEN, prompt always
      --one-file-system  階層を再帰的に削除するときに、コマンドライン引数と
                          異なったファイルシステムにあるディレクトリをス
                          キップする
      --no-preserve-root  do not treat '/' specially
      --preserve-root   do not remove '/' (default)
  -r, -R, --recursive   remove directories and their contents recursively
  -d, --dir             remove empty directories
  -v, --verbose         explain what is being done
      --help     この使い方を表示して終了する
      --version  バージョン情報を表示して終了する

デフォルトでは rm はディレクトリを削除しません。ディレクトリをその中身全てを
含めて削除するときには --recursive (-r または -R) オプションを使用してください。

To remove a file whose name starts with a '-', for example '-foo',
use one of these commands:
  rm -- -foo

  rm ./-foo

ファイルの削除に rm を使った場合、十分な専門性と時間があれば、ファイル内容
の一部を復元できるかもしれないということには留意してください。もしファイル
内容を本当に復元不可能にする保証を得たければ、shred の利用を考えてください。

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
rm の翻訳に関するバグは <http://translationproject.org/team/ja.html> に連絡してください。
Full documentation at: <http://www.gnu.org/software/coreutils/rm>
or available locally via: info '(coreutils) rm invocation'