findコマンドで空フォルダ削除するときカレント除外したい

find コマンドでとあるディレクトリ内の空のディレクトリを削除したいということがあったのでコマンドを実行

$ find /home/user/find_dir -depth -type d -empty -exec rmdir {} + -print

このコマンドで空のフォルダを削除できるようになったわけだが、

ある時、ディレクトリ内が空になった時

カレントとするディレクトリも削除されてしまうことに。

ここでいうカレントディレクトリとは、findで指定している/home/user/find_dirのことです。

どうやら、カレントディレクトリも空ディレクトリとして判断されてしまうよう。

さて、どうしたものかと調べてみると。

mindepthオプションを追加すれば良いみたい。

$ find /home/user/find_dir -depth -type d -mindepth 1 -empty -exec rmdir {} + -print

実行すると

何やらエラーが。

find: warning: you have specified the global option -mindepth after the argument -type, but global options are not positional, i.e., -mindepth affects tests specified before it as well as those specified after it. Please specify global options before other arguments.
find: 警告: 引数 -type の後にグローバル オプション -min Depth を指定しましたが、グローバル オプションは位置を指定しません。つまり、-min Depth は、その前に指定されたテストとその後に指定されたテストに影響します。他の引数の前にグローバル オプションを指定してください。

どうやらオプションの順番があるようです。

グローバルオプションはオプションの場所に関わらず、全体に影響があるオプションのこと。今回の場合は、グローバルオプションのmindepthがtypeの前に来るべきということ。

ということで、オプションの順番を調整して

$ find /home/user/find_dir -depth -mindepth 1 -type d -empty -exec rmdir {} + -print

この順番でエラーもなく処理が実行できました。