Linux ターミナルでファイルやディレクトリを削除する方法

  • rm コマンドと rmdir コマンドは、Linux やその他の Unix 系システムでファイルやディレクトリを削除するために使用されます。Windows や DOS の del コマンドと deltree コマンドに似ています。
  • rm コマンドと rmdir コマンドを使用して削除されたファイルやディレクトリは、ゴミ箱に移動されることなく、すぐにコンピューターから削除されます。誤って削除されたファイルを復元するには、バックアップを使用する必要があります。
  • rm コマンドは、ファイルのグループを選択するためにワイルドカードを使用するオプションを指定して、1 つのファイルまたは複数のファイルを削除できます。rmdir コマンドは空のディレクトリのみを削除できますが、rm -r オプションはディレクトリとそのすべての内容を削除するために使用されます。rm -rf コマンドを使用する際には注意が必要です。データの損失やシステムの誤動作を引き起こす可能性があります。

rmコマンドとrmdirコマンドは、Linux、macOS、およびその他の Unix 系オペレーティング システムでファイルやディレクトリを削除します。Windows や DOS のdelコマンドとdeltreeコマンドに似ています。これらのコマンドは非常に強力で、多くのオプションがあります。

rmコマンドとrmdirコマンドを使用して削除されたファイルやディレクトリは、ゴミ箱に移動されないことに注意することが重要です。それらはすぐにコンピューターから削除されます。これらのコマンドを使用して誤ってファイルを削除した場合、バックアップから復元できる唯一の方法です。

rm を使用して Linux でファイルを削除する方法

最も単純なケースは、現在のディレクトリにある単一のファイルを削除することです。rmコマンドとスペースを入力し、削除するファイルの名前を入力します。

rm file_1.txt

ファイルが現在の作業ディレクトリにない場合は、ファイルの場所へのパスを指定します。

rm ./path/to/the/file/file_1.txt

複数のファイル名をrmに渡すことができます。そうすると、指定されたすべてのファイルが削除されます。

rm file_2.txt file_3.txt

ワイルドカードを使用して、削除するファイルのグループを選択できます。*は複数の文字を表し、?は 1 文字を表します。このコマンドは、現在の作業ディレクトリにあるすべての png 画像ファイルを削除します。

rm *.png

このコマンドは、1 文字の拡張子を持つすべてのファイルを削除します。たとえば、これは File.1 と File.2 を削除しますが、File.12 は削除しません。

rm *.?

ファイルが書き込み禁止されている場合、ファイルが削除される前にプロンプトが表示されます。yまたはnで応答し、「Enter」キーを押す必要があります。

ワイルドカードを使用してrmを使用するリスクを軽減するには、-i(対話型)オプションを使用します。これにより、各ファイルの削除を確認する必要があります。

rm -i *.dat

-f(強制)オプションは、対話型の反対です。ファイルが書き込み禁止されている場合でも、確認を求めません。

rm -f filename

rm を使用して Linux でディレクトリを削除する方法

空のディレクトリを削除するには、-d(ディレクトリ)オプションを使用します。ファイル名と同様に、ディレクトリ名にワイルドカード(*?)を使用できます。

rm -d directory

複数のディレクトリ名を指定すると、指定されたすべての空のディレクトリが削除されます。

rm -d directory1 directory2 /path/to/directory3

空でないディレクトリを削除するには、-r(再帰的)オプションを使用します。つまり、これによりディレクトリとその中に含まれるすべてのファイルとサブディレクトリが削除されます。

rm -r directory1 directory2 directory3

ディレクトリまたはファイルが書き込み禁止されている場合、削除を確認するよう求められます。空でないディレクトリを削除し、これらのプロンプトを抑制するには、-r(再帰的)オプションと-f(強制)オプションを一緒に使用します。

rm -rf directory

ここでは注意が必要です。rm -rfコマンドを誤って使用すると、データが失われたり、システムが誤動作を起こす可能性があります。危険なので、注意することが最善策です。rm -rfコマンドによってディレクトリ構造と削除されるファイルを確認するには、treeコマンドを使用します。

Ubuntu やその他の Debian ベースのディストリビューションを使用している場合は、apt-getを使用してこのパッケージをシステムにインストールします。他の Linux ディストリビューションでは、Linux ディストリビューションのパッケージ管理ツールを使用します。

sudo apt-get install tree

treeコマンドを実行すると、コマンドが実行されたディレクトリの下にあるディレクトリ構造とファイルのわかりやすい図が生成されます。

tree

treeコマンドにパスを指定して、ファイルシステムの別のディレクトリからツリーを開始させることもできます。

tree path/to/directory

rmコマンドには--one-file-system, --no-preserve-root, --preserve-rootオプションもありますが、それらは上級ユーザーにのみ推奨されます。何かを間違えると、システム ファイルをすべて誤って削除する可能性があります。詳細については、コマンドのマニュアル ページを参照してください。

rmdir を使用して Linux でディレクトリを削除する方法

ディレクトリを削除するために使用できる、rmdirという別のコマンドがあります。rmrmdirの違いは、rmdirは空のディレクトリのみを削除できることです。決してファイルを削除することはありません。

最も単純なケースは、1 つの空のディレクトリを削除することです。rmと同様に、複数のディレクトリ名をrmdirに渡すか、ディレクトリへのパスを渡すことができます。

その名前をrmdirに渡すことで、現在のディレクトリにある単一のディレクトリを削除します。

rmdir directory

名前のリストをrmdirに渡すことで、複数のディレクトリを削除します。

rmdir directory1 directory2 directory3

そのディレクトリへの完全なパスを指定することで、現在のディレクトリにないディレクトリを削除します。

rmdir /path/to/directory

空でないフォルダーを削除しようとすると、rmdirはエラー メッセージを表示します。次の例では、rmdirclientsディレクトリを正常に、かつ静かに削除しますが、ファイルが含まれているためprojectsディレクトリの削除を拒否します。projectsディレクトリはそのまま残り、その中のファイルはそのままです。

rmdirが「Directory not empty」エラーを出した場合は、コマンド ラインで渡されたディレクトリの処理を停止します。4 つのディレクトリを削除するように求め、最初のディレクトリにファイルがあった場合、rmdirはエラー メッセージを表示してそれ以上何も行いません。--ignore-fail-on-non-emptyオプションを使用して、これらのエラーを無視して、他のディレクトリが処理されるように強制できます。

次の例では、2 つのフォルダーがrmdirに渡されました。これらはwork/reportswork/quotesです。--ignore-fail-on-non-emptyオプションがコマンドに含まれています。work/reportsフォルダーにはファイルが含まれているため、rmdirはそれを削除できません。--ignore-fail-on-non-emptyオプションにより、rmdirはエラーを無視して、処理する必要がある次のフォルダー(work/quotes)に進みます。これは空のフォルダーであり、rmdirはそれを削除します。

使用されたコマンドは次のとおりです。

rmdir --ignore-fail-on-non-empty work/reports /work/quotes

-p(親)オプションを使用して、ディレクトリとその親ディレクトリも削除できます。このトリックが機能するのは、rmdirがターゲット ディレクトリから開始し、親ディレクトリにバックステップするためです。そのディレクトリは空になっているはずなので、rmdirによって削除することができ、このプロセスはrmdirに提供されたパスを遡って繰り返されます。

次の例では、rmdirに渡されるコマンドは次のとおりです。

rmdir -p work/invoices

要求どおり、invoicesworkの両方のディレクトリが削除されます。

Bash やその他のシェルを使用している場合でも、Linux にはターミナル コマンド ラインから直接ディレクトリやファイルを削除するための柔軟で強力なコマンドが用意されています。ターミナルを中心としたワークフローを好む人もいます。選択肢がない人もいます。GUI がインストールされていないサーバーや、Raspberry Pi などのヘッドレス システムへのリモート セッションで作業している可能性があります。これらのコマンドはそのような人々に最適です。

しかし、どのようなタイプのワークフローを好む場合でも、これらのコマンドはシェル スクリプトに組み込むのに非常に適しています。スクリプトがcronジョブによってトリガーされた場合、不要なログ ファイルを削除するなどの定期的なハウスキーピング タスクを自動化できます。そのユースケースを調査する場合は、これらのコマンドの力を覚えておき、すべてを慎重にテストし、常に最新のバックアップを維持してください。