概要
rmdir(remove directory)は、空のディレクトリを削除するためのコマンドです。
ファイルが含まれているディレクトリを削除しようとするとエラーが発生して停止するため、誤って重要なファイルを消してしまうリスクがありません。「中身が空であることを確認してから消したい」という安全重視の場面や、スクリプト内で空のフォルダ整理を行う際に使用されます。
※中身ごと強制的に削除したい場合は rm -r を使用しますが、rmdir は安全策として機能します。
仕様(引数・オプション)
構文
rmdir [オプション] [ディレクトリ名...]
主なオプション
| オプション | 説明 |
| -p | 指定したパスのディレクトリを削除し、その結果親ディレクトリが空になれば親も削除します(parents)。 |
| -v | 削除したディレクトリを表示します(verbose)。 |
| –ignore-fail-on-non-empty | ディレクトリが空でなく削除に失敗しても、エラーメッセージを表示しません(スクリプトでのエラー抑止用)。 |
基本の使い方
空のディレクトリを削除する
最も基本的な使い方は、空のディレクトリ名を指定して削除することです。
# "empty_folder" という空ディレクトリを削除
rmdir empty_folder
実行結果イメージ:
(成功時は何も表示されません。失敗時はエラーが出ます)
(表示なし)
実践コマンド
1. 階層の深いディレクトリをまとめて削除する (-p)
logs/2025/01 のような階層構造があり、全て空である場合、最下層を指定して -p を付けると、芋づる式に親ディレクトリも削除できます。
# 01ディレクトリを削除し、空になった2025、logsも順に削除する
rmdir -p logs/2025/01
2. 削除の経過を表示する (-pv)
-p オプションと -v を組み合わせると、どのディレクトリが削除されたかが可視化され、挙動が分かりやすくなります。
rmdir -pv project/temp/cache/v1
実行結果イメージ:
rmdir: removing directory, 'project/temp/cache/v1'
rmdir: removing directory, 'project/temp/cache'
rmdir: removing directory, 'project/temp'
rmdir: removing directory, 'project'
3. 空でない場合は無視して続行する
スクリプトなどで「もし空なら消すが、ファイルがあるならそのまま残したい」という場合に、エラーを出さずに処理を継続させます。
# 中身があれば削除せず、エラーも表示しない
rmdir --ignore-fail-on-non-empty user_data_dir
カスタムポイント
- 複数指定:
rmdir dir1 dir2 dir3のようにスペース区切りで複数のディレクトリを一度に削除可能です。
- 絶対パスと相対パス:
/tmp/workのように絶対パスでも指定可能です。
注意点
- ファイルは消せない:
- ディレクトリ内にファイルが1つでも残っていると
rmdir: failed to remove 'xxx': Directory not emptyというエラーになります。これは仕様であり、安全装置です。
- ディレクトリ内にファイルが1つでも残っていると
- 隠しファイルに注意:
- 一見空に見えても、
.DS_Store(Mac)や.gitignoreなどの隠しファイルが存在すると削除できません。ls -aで確認する必要があります。
- 一見空に見えても、
- 親ディレクトリの権限:
- 削除するには、そのディレクトリ自体ではなく、親ディレクトリに対する書き込み権限が必要です。
応用
findコマンドと組み合わせて空ディレクトリを一掃する
システム内の大量の空ディレクトリをまとめて掃除したい場合、rmdir を単体で使うより find コマンドを使うのが現代的な手法です。
# カレントディレクトリ以下の空ディレクトリを検索して全て削除
find . -type d -empty -delete
まとめ
rmdirコマンドは、Linuxにおける「安全な掃除屋」です。
- 向く場面: 処理終了後の空フォルダ整理、誤削除を防ぎたい慎重な作業。
- 変更ポイント: 階層ごと消すなら
-p、経過を見たいなら-v。 - 注意点: ファイルが入っているディレクトリには
rm -rを使う必要がある。
rm -rf は強力すぎて危険ですが、rmdir なら「空だと思っていたのに重要ファイルが入っていた」という事故を未然に防いでくれます。
