Linuxで不要になったディレクトリを削除したいときに使うコマンドのひとつが「rmdir」です。シンプルなコマンドですが、使い方を誤ると削除できなかったり、エラーメッセージが表示されたりすることがあります。本記事では、rmdir
コマンドの基本的な使い方から、エラーの原因とその対処法、他の削除コマンドとの違いまで、初心者にもわかりやすく解説していきます。安全にディレクトリを削除するための知識を身につけましょう。
rmdir
(remove directory)は、その名の通りディレクトリを削除するためのLinuxコマンドです。
ただし、削除できるのは「中身が空のディレクトリ」のみです。ファイルや他のディレクトリが中に入っている場合、削除はできません。
基本的な構文は以下の通りです:
rmdir ディレクトリ名
たとえば、test
という名前の空のディレクトリを削除したい場合は以下のようにします:
rmdir test
このコマンドを実行すると、test
ディレクトリが削除されます。
rmdir
を使う際に最もよくあるエラーが、「ディレクトリが空でないため削除できない」というものです。以下のようなエラーメッセージが表示されます:
failed to remove 'sample': Directory not empty
この場合は、まずそのディレクトリの中にファイルやサブディレクトリが存在していないかを確認しましょう。確認には次のようにls
コマンドを使います。
ls sample/
中にファイルがある場合は、それらをすべて削除するか、rmdir
以外の方法を使う必要があります。
中にファイルが入っているディレクトリを削除したい場合には、rmdir
ではなくrm -r
コマンドを使用します。
rm -r ディレクトリ名
たとえば、sample
というディレクトリとその中身すべてを削除したい場合:
rm -r sample
-r
オプションは「再帰的(recursive)」という意味で、ディレクトリの中身もすべて削除します。ただし、このコマンドは非常に強力で、一度削除すると元に戻すことができません。使用には注意が必要です。
rmdir
は複数のディレクトリ名を一度に指定することができます。
すべてが空である場合、次のように一括で削除が可能です。
rmdir dir1 dir2 dir3
このように、効率よく削除できますが、1つでも空でないディレクトリがあると、その部分でエラーとなり、以降のディレクトリが処理されない可能性もあるため注意が必要です。
GNU版のrmdir
には--ignore-fail-on-non-empty
というオプションがあります。
これは、空でないディレクトリが含まれていても、エラーメッセージを表示せずにスキップして処理を続けるというものです。
rmdir --ignore-fail-on-non-empty dir1 dir2 dir3
このオプションを使うことで、「空のディレクトリだけを削除する」といった目的で複数削除したいときに便利です。
--parents
オプションを使えば、削除対象のディレクトリだけでなく、その親ディレクトリも空であれば一緒に削除できます。
たとえば、以下のような階層があるとします:
project/
└── tmp/
└── test/
test
を削除し、tmp
とproject
も空であれば削除したい場合:
rmdir --parents project/tmp/test
このコマンドは、test
→ tmp
→ project
の順に空であればすべて削除していきます。
ls
などでディレクトリの中身を必ずチェックしましょう。rm -r
との使い分け:完全削除をしたいときはrm -r
、安全に空のディレクトリだけを削除したいときはrmdir
。スクリプトなどで空かどうかを判定してから削除したい場合は、以下のような方法が使えます:
[ -d "$dir" ] && [ -z "$(ls -A "$dir")" ] && rmdir "$dir"
このワンライナーは、
をチェックしたうえで、rmdir
を実行します。
rmdir
コマンドは一見シンプルですが、「空のディレクトリしか削除できない」という特性により、誤って必要なファイルを削除する心配が少ない、安全志向のコマンドです。
rm -r
と使い分けるこのような特性を理解して、rmdir
を上手に活用していきましょう。削除処理はときに取り返しがつかないため、慎重さと正しい知識が重要です。Linuxの操作に慣れる第一歩として、rmdir
はとても良い練習題材とも言えるでしょう。