空のディレクトリツリーの削除(ファイルを削除せずにできるだけ多くのディレクトリを削除)

空のディレクトリツリーの削除(ファイルを削除せずにできるだけ多くのディレクトリを削除)

次のディレクトリツリーがあるとします。

ROOTDIR
    └--SUBDIR1
        └----SUBDIR2
            └----SUBDIR3

入力するときは、次のコマンドを探しています。

$ [unknown command] ROOTDIR

ディレクトリツリー全体を削除できます。ツリー全体にファイルがなく、ディレクトリのみがある場合。しかし、SUBDIR1の下にhello.pdfというファイルがあるとします。

ROOTDIR
    └--SUBDIR1
        └--hello.pdf
        └----SUBDIR2
            └----SUBDIR3

その後、コマンドはSUBDIR2以下のみを削除する必要があります。

答え1

find ROOTDIR -type d -empty -delete

それは同じです

find ROOTDIR -type d -depth -empty -exec rmdir "{}" \;

ただし、組み込みの「-delete」操作を使用してください。

「-削除」は「-深さ」を意味します。

答え2

アレクシスは近かった。あなたがしなければならないことは次のとおりです。

find . -type d -depth -empty -exec rmdir "{}" \;

まず、最初の空のディレクトリが見つかるまでディレクトリツリーをドリルダウンしてから削除します。したがって、親ディレクトリを空にして削除するなどの操作を実行します。これはあなたが望む効果をもたらすでしょう。 (おそらく週に10回程度この作業を行うので、これが正しいと確信しています。) :-)

答え3

私はこれを試みます:

find ROOTDIR -type d -depth -exec rmdir {} \;

答え4

rmdir $(find ROOTDIR -type d | sort -r)

関連情報