内容が指定されたサイズより小さいディレクトリを削除するコマンド

内容が指定されたサイズより小さいディレクトリを削除するコマンド

~/fooサブディレクトリがあるディレクトリで作業しています。

~/foo/alpha
~/foo/beta
~/foo/epsilon
~/foo/gamma

~/foo各「レベル1」サブディレクトリの下の合計サイズを確認し、サイズが指定された値より小さい場合は、ディレクトリとその内容を削除するコマンドを実行したいと思います。

したがって、.より小さいコンテンツを削除したいとします50K$ du -sh */

8.0K alpha/
114M beta/
20K  epsilon/
1.2G gamma/

~/alpha私のコマンドでその内容とその内容を削除できるようにしたいです~/epsilon。そのようなコマンドがありますか?私はこれが何とかできると思いますfindが、どうなるかはよくわかりません。

ベストアンサー1

GNUfindとGNUを使用coreutilsし、ディレクトリ名に改行がないとします。

find ~/foo -mindepth 1 -maxdepth 1 -type d -exec du -ks {} + | awk '$1 <= 50' | cut -f 2-

これにより、合計コンテンツが50K未満のディレクトリが一覧表示されます。結果に満足して削除するには、| xargs -d \\n rm -rfコマンドラインの最後に追加します。

おすすめ記事