ウェブサイト検索

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


ハンナ・ストライカー/ハウ・トゥ・ギーク

 

重要なポイント

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

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

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

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

最もシンプルなケースは、現在のディレクトリ内の単一のファイルを削除することです。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

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

空のディレクトリを削除するには、-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オプションもありますが、これらは上級ユーザー向けにのみ推奨されています。何かを間違えると、システムファイルをすべて誤って削除してしまう可能性があります。詳細については、コマンドのマニュアルページを参照してください。

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

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

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

現在のディレクトリでディレクトリ名を rmdir に渡して、単一のディレクトリを削除します:

rmdir directory

複数のディレクトリを削除するには、名前のリストをrmdirに渡します:

rmdir directory1 directory2 directory3

現在のディレクトリにないディレクトリを、そのディレクトリへのフルパスを指定して削除します:

rmdir /path/to/directory

空でないフォルダを削除しようとすると、rmdir はエラーメッセージを表示します。次の例では、rmdir は成功裏に、かつ静かに clients ディレクトリを削除しますが、ファイルが含まれているため projects ディレクトリの削除は拒否されます。projects ディレクトリは元のまま残り、その中のファイルは手を付けられていません。

rmdir が "ディレクトリが空ではない" エラーを返すと、コマンドラインで渡されたディレクトリの処理を停止します。もし四つのディレクトリを削除するように要求し、その最初のディレクトリにファイルが含まれていた場合、rmdir はエラーメッセージを返し、それ以降の処理を行いません。--ignore-fail-on-non-empty オプションを使うことで、これらのエラーを無視して他のディレクトリを処理するよう強制できます。

次の例では、2つのフォルダーがrmdirに渡されています。それらはwork/reportsとwork/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

リクエストに応じて、invoices と work ディレクトリは削除されました。


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

ただし、どのタイプのワークフローを好んでも、これらのコマンドはシェルスクリプトに含めるのに非常に便利です。スクリプトが cron ジョブによってトリガーされる場合、不要なログファイルの削除など、日常的な維持管理タスクを自動化するのに役立ちます。そのユースケースを調査する際は、これらのコマンドの力を忘れずに、すべてを慎重にテストし、常に最新のバックアップを維持してください。

Linuxコマンド

ファイル

t

プロセス

A

ネットワーキング

netstat・ping・traceroute・ip・ss・whois・fail2ban・bmon・dig・finger・nmap・ftp・curl・wget・who・whoami・w・iptables・ssh-keygen・ufw・arping・firewalld

関連記事: