Linuxで空のファイルとディレクトリの両方を再帰的に削除する方法は?

Linuxで空のファイルとディレクトリの両方を再帰的に削除する方法は?

親ディレクトリのすべての空のファイルとディレクトリを再帰的にクリーンアップする方法は?

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

Parent/
  |____Child1/
        |______ file11.txt (empty)
        |______ Dir1/ (empty)

  |____Child2/
        |_______ file21.txt
        |_______ file22.txt (empty)

  |____ file1.txt

私はそう終わらなければならない:

Parent/
  |____Child2/
        |_______ file21.txt

  |____ file1.txt

ベストアンサー1

以下は非常にシンプルなライナーです。

find Parent -empty -delete

これはかなり自明です。確認してみると、Parent/Child1が正常に削除されたことに驚きました。通常、指定しない限り、親は最初に処理され、次に子が処理されると予想されます-depth

-deleteこれは意味するので有効です-depthGNU検索マニュアル:

-deleteファイルを削除します。削除に成功した場合はtrueです。削除に失敗すると、エラーメッセージが表示されます。 -deleteが失敗した場合、findの終了ステータスは0ではありません(最後に終了したとき)。 -delete を使用すると、-deep オプションが自動的にオンになります。


これらの機能は以下の一部ではありません。POSIX規格しかし、多くのLinuxディストリビューションに存在する可能性が高いです。 Alpine Linuxなどの小規模Linuxでは、特定の問題が発生する可能性があります。忙しい箱サポートしていません-empty

他のシステムには非標準システムが含まれ、以下が-empty含ま-deleteれます。BSDそしてOSXしかし明らかにそうではありませんAIX

おすすめ記事