【Linux】rm-ファイル/ディレクトリの削除|初学者に向けた備忘録

Linux
スポンサーリンク
はづき
はづき

こんにちは!はづきです

文系から一部上場IT企業に就職し、エンジニアをやっています

この記事はLinuxのrmコマンドについての備忘録です

rmは「remove」の略称で、ファイル削除のためのコマンドです。オプションの付け方次第でディレクトリの削除もできます

基本操作や頻繁に使用するオプションの実行例を紹介します。ぜひご参考ください

※この記事は初心者向けに平易に解説しています。正確な理解をしたい人は専門書・専門家をあたっていただければと思います。また、この記事の情報におけるCPの動作結果については自己責任でお願いします。

※本サイトにはプロモーション・広告が含まれています(はづきのブログより)

スポンサーリンク

rmコマンドの基本操作

まずはrmの一般的な使い方から解説します

上記画像のようなファイルやディレクトリを事前に用意しました。カレントディレクトリworkにいる状態から実際にコマンドを実行していきます

rmコマンドでファイルを削除する

rm {削除したいファイル名}

rmコマンドは「rm {削除したいファイル名}」で実行することができます

{削除したいファイル名}には複数のファイルを列挙することも可能です。また、パスを指定すればカレントディレクトリ配下以外のファイルも削除することができます

以下で実行例を見てみましょう

#rmコマンドでfile1.htmlを削除してみる
hazukiblog@hazukiBlog:~/work$ ls #削除前の状態を確認
dir1  file1.html  file1.txt  file10.html  file2.html
hazukiblog@hazukiBlog:~/work$ rm file1.html
hazukiblog@hazukiBlog:~/work$ ls #file1.htmlが消えている
dir1  file1.txt  file10.html  file2.html

#rmコマンドで複数のファイルを同時に削除してみる
hazukiblog@hazukiBlog:~/work$ ls #削除前の状態を確認
dir1  file1.txt  file10.html  file2.html
hazukiblog@hazukiBlog:~/work$ rm file1.txt file2.html
hazukiblog@hazukiBlog:~/work$ ls #指定した2個のファイルが消えている
dir1  file10.html

#カレントディレクトリ以外のファイルを削除してみる
hazukiblog@hazukiBlog:~/work$ ls dir1/ #「dir1」ディレクトリ配下を確認
File1
hazukiblog@hazukiBlog:~/work$ rm dir1/File 1#dir1配下のFile1を削除する
hazukiblog@hazukiBlog:~/work$ ls dir1/ #File1が消えている

rmコマンドでワイルドカードを使用する

ワイルドカード文字説明               
*任意の文字列
?任意の1文字

rmコマンドではワイルドカードを使用することができます

ワイルドカードとはファイル名の共通部分を指定して削除できる機能です(例.「.html」で終わるファイルを一度ですべて削除したい、など)

指定するときは「*」や「?」といった記号を使います

以下で実行例を見てみましょう

#ワイルドカード「*」を用いて、htmlファイルのみを消してみる
#「rm *」の場合、カレントディレクトリ配下のファイルをすべて削除できる
hazukiblog@hazukiBlog:~/work$ ls #削除前の状態を確認
dir1  file1.html  file1.txt  file10.html  file2.html
hazukiblog@hazukiBlog:~/work$ rm *.html
hazukiblog@hazukiBlog:~/work$ ls #htmlファイルのみ消えている
dir1  file1.txt

#ワイルドカード「?」を用いて、「file{1桁}.html」のファイルを消してみる
hazukiblog@hazukiBlog:~/work$ ls #削除前の状態を確認
dir1  file1.html  file1.txt  file10.html  file2.html
hazukiblog@hazukiBlog:~/work$ rm file?.html
hazukiblog@hazukiBlog:~/work$ ls #file1.html,file2.htmlが消えている
dir1  file1.txt  file10.html

rmコマンドのオプションを紹介

rmコマンドにはいくつかオプションが用意されています

以下では各オプションについて実行例を交えて解説します

-d:空のディレクトリを削除する

-dオプションを付けると空のディレクトリを削除することができます

基本的にrmはファイルを削除するためにコマンドです。ディレクトリを削除するときにはrmdirという別のコマンドが使われることが一般的です

そのような中で、rmでもディレクトリを削除できるのが-dオプションになります

#-dオプションで空のディレクトリ(emptyDir)を削除する
hazukiblog@hazukiBlog:~/work$ ls #削除前の状態を確認
dir1  emptyDir  file1.html  file1.txt  file10.html  file2.html
hazukiblog@hazukiBlog:~/work$ rm -d emptyDir
hazukiblog@hazukiBlog:~/work$ ls #emptyDirが消えている
dir1  file1.html  file1.txt  file10.html  file2.html

#空でないディレクトリは削除できない
#dir1配下にはファイルが存在するため空でない
hazukiblog@hazukiBlog:~/work$ rm -d dir1
rm: cannot remove 'dir1': Directory not empty

-r:ディレクトリを含めて再帰的に削除する

-rオプションではディレクトリを含めて再帰的に削除できます

-dオプションでは空のディレクトリしか削除できませんでしたが、-rオプションでは削除することができます

しかし、指定したディレクトリの中身は基本的にすべて削除されてしまうため注意が必要です

#-rオプションでディレクトリ(dir1)を削除
#(注意)dir1配下にあるディレクトリやファイルはすべて削除される
hazukiblog@hazukiBlog:~/work$ ls dir1 #dir1配下にはファイルが存在する
File1
hazukiblog@hazukiBlog:~/work$ rm -r dir1
hazukiblog@hazukiBlog:~/work$ ls #dir1ごと削除される
file1.html  file1.txt  file10.html  file2.html

-f:エラーメッセージを表示しない

-fオプションを付けるとコマンド実行時のエラーが表示されなくなります

rmコマンドでは、存在しないファイル名を指定するとエラーが出ますが、-fを付けることで非表示にすることができます。実行の挙動に影響はありません

#存在しないファイル「file5」を削除対象としてみる
hazukiblog@hazukiBlog:~/work$ ls #file5は存在しない
dir1  file1.html  file1.txt  file10.html  file2.html
hazukiblog@hazukiBlog:~/work$ rm file5 #「-f」なしで削除するとエラーが出る
rm: cannot remove 'file5': No such file or directory
hazukiblog@hazukiBlog:~/work$ rm -f file5 #「-f」があるとエラーが出ない
hazukiblog@hazukiBlog:~/work$ ls #カレントディレクトリに変化はない
dir1  file1.html  file1.txt  file10.html  file2.html

-v:削除したファイル名を確認する

-vオプションを付けると削除したファイル名を確認することができます

実行結果の証跡を残す際に使用されることが多いです。正常に削除ができたかどうかログを残すことができます

#-vを付けてfile1.htmlを削除してみる
hazukiblog@hazukiBlog:~/work$ ls
dir1  file1.html  file1.txt  file10.html  file2.html
hazukiblog@hazukiBlog:~/work$ rm -v file1.html
removed 'file1.html' #このように削除したファイル名が表示される
hazukiblog@hazukiBlog:~/work$ ls
dir1  file1.txt  file10.html  file2.html

#指定するファイルは2つ以上同時でもOK
#存在しないファイルについてはエラーメッセージが出る
hazukiblog@hazukiBlog:~/work$ ls
dir1  file1.txt  file10.html  file2.html
hazukiblog@hazukiBlog:~/work$ rm -v file1.txt file2.html file5
removed 'file1.txt'
removed 'file2.html'
rm: cannot remove 'file5': No such file or directory
hazukiblog@hazukiBlog:~/work$ ls
dir1  file10.html

-i:ファイルの削除確認を表示する

-iはファイルの削除確認を表示させるオプションです

削除確認に対して「y」や「Y」を入力してEnterを押すことで削除が完了します

#-iを付けて削除確認を表示してみる
hazukiblog@hazukiBlog:~/work$ ls
dir1  file1.html  file1.txt  file10.html  file2.html

#-iを付けてfile1.htmlを消す
#「n」と打ってEnterを押すと削除されない(nはNoの頭文字なのでよく使われる)
hazukiblog@hazukiBlog:~/work$ rm -i file1.html
rm: remove regular empty file 'file1.html'? n #「n」と打ってEnter
hazukiblog@hazukiBlog:~/work$ ls
dir1  file1.html  file1.txt  file10.html  file2.html

#Enterを押すだけでも削除されない
hazukiblog@hazukiBlog:~/work$ rm -i file1.html
rm: remove regular empty file 'file1.html'? #Enterだけ押してみた
hazukiblog@hazukiBlog:~/work$ ls
dir1  file1.html  file1.txt  file10.html  file2.html

#「y」と打ってEnterを押すと削除される(yはYesの頭文字としてよく使われる)
hazukiblog@hazukiBlog:~/work$ rm -i file1.html
rm: remove regular empty file 'file1.html'? y
hazukiblog@hazukiBlog:~/work$ ls
dir1  file1.txt  file10.html  file2.html

-I:削除の対象が4つ以上または再帰的に削除する場合、削除確認をする

-Iオプションを付けると条件を満たした際に削除確認が表示されます

条件は以下の2つのどちらかです

  1. 削除対象のファイルが4つ以上ある
  2. -rオプションのように再帰的に削除を実行する

一度に大量のファイルを削除するときだけ削除確認をして欲しい際に使用します

-iオプションと同様に、削除確認に対して「y」や「Y」を入力してEnterを押すことで削除が完了します

#-Iを付けてファイルを削除してみる
#以下のようなファイルを用意しました
hazukiblog@hazukiBlog:~/work$ ls
dir1  file1  file2  file3  file4  file5  file6  file7

#3つ以下のファイルを削除しようとしても削除確認は出ない
hazukiblog@hazukiBlog:~/work$ rm -I file5 file6 file7
hazukiblog@hazukiBlog:~/work$ ls
dir1  file1  file2  file3  file4

#4つ以上のファイルを削除しようとすると削除確認が出る
hazukiblog@hazukiBlog:~/work$ rm -I file1 file2 file3 file4
rm: remove 4 arguments? y
hazukiblog@hazukiBlog:~/work$ ls
dir1

#再帰的に削除しようとすると削除確認が出る
#再帰的に削除したいため「-r」と併用する必要がある
hazukiblog@hazukiBlog:~/work$ ls
dir1
hazukiblog@hazukiBlog:~/work$ rm -I dir1 #-rがないためエラーが出る
rm: cannot remove 'dir1': Is a directory
hazukiblog@hazukiBlog:~/work$ rm -rI dir1 #-rがあれば削除確認が出る
rm: remove 1 argument recursively? y
hazukiblog@hazukiBlog:~/work$ ls

 

今回はLinuxのrmコマンドについて紹介しました

みなさんのお役に立てば幸いです。最後まで読んでいただきありがとうございました

おしまい

コメント

タイトルとURLをコピーしました