【Linux】rmdirコマンドで空のディレクトリを安全に削除する

目次

概要

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. ファイルは消せない:
    • ディレクトリ内にファイルが1つでも残っていると rmdir: failed to remove 'xxx': Directory not empty というエラーになります。これは仕様であり、安全装置です。
  2. 隠しファイルに注意:
    • 一見空に見えても、.DS_Store(Mac)や .gitignore などの隠しファイルが存在すると削除できません。ls -a で確認する必要があります。
  3. 親ディレクトリの権限:
    • 削除するには、そのディレクトリ自体ではなく、親ディレクトリに対する書き込み権限が必要です。

応用

findコマンドと組み合わせて空ディレクトリを一掃する

システム内の大量の空ディレクトリをまとめて掃除したい場合、rmdir を単体で使うより find コマンドを使うのが現代的な手法です。

# カレントディレクトリ以下の空ディレクトリを検索して全て削除
find . -type d -empty -delete

まとめ

rmdirコマンドは、Linuxにおける「安全な掃除屋」です。

  • 向く場面: 処理終了後の空フォルダ整理、誤削除を防ぎたい慎重な作業。
  • 変更ポイント: 階層ごと消すなら -p、経過を見たいなら -v
  • 注意点: ファイルが入っているディレクトリには rm -r を使う必要がある。

rm -rf は強力すぎて危険ですが、rmdir なら「空だと思っていたのに重要ファイルが入っていた」という事故を未然に防いでくれます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次