Linux
 Computer >> コンピューター >  >> トラブルシューティング >> Linux

「rmdir: Directory not empty」エラーの解決方法|Linux・Windows対応ガイド

rmdirは、LinuxおよびWindowsで利用できるコマンドラインユーティリティで、空のディレクトリを削除するためのコマンドです。標準的なrmコマンドは中身が入ったディレクトリでもまとめて削除できてしまうため、誤って重要なファイルを含むディレクトリを消してしまうリスクがあります。その点、rmdirは空のディレクトリしか削除しないため、意図しないデータ消失を防げる安全なコマンドとして重宝されています。

「rmdir: directory not empty(ディレクトリが空ではありません)」というエラーは、ファイルやサブディレクトリを含む空ではないディレクトリに対してrmdirコマンドを実行した際に発生します。これはrmdirコマンドの仕様上の正常な動作であり、Linuxをはじめ、rmdirユーティリティを備えたOSでは、空でないディレクトリを指定すると必ずこのエラーが表示されます。

Linuxで「rmdir: directory not empty」エラーを解決する方法

このエラーを解消するには、いくつかの簡単な対処法があります。空でないディレクトリへの実行以外にも、シンボリックリンクの不具合などが原因でエラーが発生するケースもあります。

以下に、実際に試せる解決策を順番に紹介します。

1. 「rm -rf」コマンドを使う

このエラーに遭遇した場合は、Linuxのrmコマンドを使えば空でないディレクトリも削除できます。まず、ディレクトリが本当に空でないこと、エラーの原因が他にないことを確認しましょう。削除したいディレクトリに対して「ls -a」コマンドを実行します。隠しファイルを含む中身が表示されれば、ディレクトリ内にファイルが存在するのがわかりますので、「rm -rf」コマンドで削除を実行できます。

例:

ここでは、abcdというディレクトリを削除したいとします。

まず「ls -a」コマンドでディレクトリの中身を確認したところ、いくつかのファイルが存在していることが判明しました。

この状態でrmdirコマンドを実行しても、ディレクトリが空でないためエラーになってしまいます。

最もシンプルな解決策は、次のようにrm -rfを使うことです。

rm -rf abcd

-rオプションは「再帰的(recursive)」を意味し、ディレクトリ内のすべての内容を再帰的に削除します(内部にあるサブディレクトリもまとめて削除されます)。

-fオプションは「強制(force)」を意味し、ディレクトリが空でなくても確認なしに強制的に削除します。

削除したいディレクトリに対して、現在のユーザーに書き込み権限がない場合は、次のコマンドを使用します。

sudo rm -rf abcd

なお、sudoをrmと組み合わせるのは、自分が何をしているのかを十分理解しており、削除対象がシステムディレクトリでない場合に限定してください。root権限ではシステムディレクトリも削除できてしまうため、取り返しのつかない事故につながる恐れがあります。

2. ファイルマネージャーを使って削除する

まれに、rmコマンドに-fや-rフラグを付けてもファイルを削除できず、ファイルマネージャー経由なら削除できたという報告もあります。同じような状況に陥った場合は、この方法も試してみてください。

Ubuntuをはじめとする多くのLinuxディストリビューションには、デフォルトでファイルマネージャーがインストールされています。これらを使えば、ディレクトリやフォルダをGUI操作で簡単に削除できます。

Ubuntuをお使いなら、標準搭載されているNautilus(ファイル)でディレクトリを削除できます。もちろん、他のファイルマネージャーでも問題ありません。Nautilusはあくまで一例です。

Windowsで「rmdir: directory not empty」エラーを解決する方法

このエラーは、WindowsのコマンドプロンプトやPowerShellでディレクトリを削除しようとした際にも発生します。Windowsで解決するには、以下の方法を試してください。

  • 強制削除オプションを使う: PowerShellでは「rm -r -force ディレクトリ名」、コマンドプロンプトでは「rmdir /s /q ディレクトリ名」を実行すると、中身ごと強制的に削除できます。
  • 他のプログラムがディレクトリを使用していないか確認する: 削除したいディレクトリが別のアプリケーションで開かれていると削除できないことがあります。その場合は、タスクマネージャーで該当プログラムを終了させてください。

その後、コマンドプロンプトまたはPowerShellでrmdirコマンドなどを再度実行すれば、ディレクトリを削除できるはずです。

著者について

「rmdir: Directory not empty」エラーの解決方法|Linux・Windows対応ガイド

Kevin Arrows(ケビン・アローズ)

Kevin Arrowsは、10年以上の業界経験を持つテクノロジースペシャリストです。Microsoft Certified Technology Specialist(MCTS)の認定資格を保有し、最新の技術動向を追いかけることに深い情熱を注いでいます。ソフトウェア開発、サイバーセキュリティ、クラウドコンピューティングなどの幅広い分野における専門知識を活かし、数多くの技術記事を執筆しています。複雑な技術的な概念を明快かつ簡潔に説明する力で高く評価されており、その貢献は業界内外で広く認められ、尊敬を集めています。

  1. 「中央ディレクトリ終端署名が見つかりません」エラーの原因と解決方法

    圧縮ファイルは現代のデジタルライフにおいて欠かせない存在となっています。ファイルサイズが日々大きくなる中、データを効率的に保存・転送するために圧縮技術を活用する人はますます増えています。しかし、圧縮ファイルを解凍しようとした際に、「End-of-central-directory signature not found(中央ディレクトリ終端署名が見つかりません)」というエラーメッセージが表示され、困っているユーザーも少なくありません。このエラーは、unzipコマンドなどでファイルを展開しようとしたときに発生します。 エラーが発生する主な原因 このエラーメッセージの原因は比較的わかりやすいも

  2. SSHの「Could not resolve hostname(ホスト名を解決できません)」エラーを素早く解決する方法

    SSHでリモート接続を試みた際、「Could not resolve hostname(ホスト名を解決できませんでした)」というエラーが表示されることがあります。このエラーに遭遇した場合は、まずネットワークに正しく接続されているかどうかを確認しましょう。Wi-Fiなどの無線接続を使用している方は、通信が安定して行えるだけの信号強度があるかも併せてチェックしてください。多くの開発者によれば、この種のエラーの最も一般的な原因は接続不良であり、タイプミスよりも頻繁に発生するといわれています。 接続状態に問題がないことが確認できたら、次に入力内容の誤りをチェックします。IPアドレスやリソースロケータの