【Linux】findコマンドで空のディレクトリを削除する際に、起点のディレクトリを残す。

システム運用の一環で、一時フォルダにあるごみを削除することになりました。

findコマンドで空ディレクトリを削除できるとわかったのでやってみたが、配下のディレクトリがすべて削除されると、ターゲットディレクトリまで削除の対象になってしまった。↓

find <ターゲットディレクトリ> -type d -depth -empty -delete -print

【対処方法】

調べた結果findコマンドのmindepthというオプションが使えることが分かった。

-mindepth levels
検索開始ポイントから levels で示される階層数のディレクトリに至るまでは、 テストやアクションを適用しません (levels は負ではない整数です。)。 -mindepth 1 を指定すると、 検索開始ポイントを除いたファイルを、 すべて処理することになります。

https://linuxjm.osdn.jp/html/GNU_findutils/man1/find.1.html

つまり、-mindepthに1をセットすることで、検索開始ポイントは処理の対象外にできるということで、以下のようにコマンドを変更しました。

【改良後のコマンド】
find <ターゲットディレクトリ> -mindepth 1 -type d -depth -empty -delete -print

実行してみると以下のようにターゲットディレクトリは維持されたまま、空ディレクトリを掃除することができた。

【実行前】
./
└─target
   ├─folder_1
    │
    └─folder_2

【実行後】
./
└─target

うまくいったぞ!(v´∀`v)