删除内容小于给定大小的目录的命令

Bri*_*ick 5 directory find

我在一个~/foo有子目录的目录中工作

~/foo/alpha
~/foo/beta
~/foo/epsilon
~/foo/gamma
Run Code Online (Sandbox Code Playgroud)

我想发出一个命令,检查每个“级别 1”子目录下的总大小,~/foo如果大小低于给定数量,则删除该目录及其内容。

因此,假设我想删除内容少于50K. 签发$ du -sh */退货

8.0K alpha/
114M beta/
20K  epsilon/
1.2G gamma/
Run Code Online (Sandbox Code Playgroud)

我想我的命令来删除~/alpha,并~/epsilon与他们的内容一起。有这样的命令吗?我怀疑这可以通过find某种方式完成,但我不太确定如何。

lcd*_*047 16

使用 GNUfind和 GNU coreutils,并假设您的目录名称中没有换行符:

find ~/foo -mindepth 1 -maxdepth 1 -type d -exec du -ks {} + | awk '$1 <= 50' | cut -f 2-
Run Code Online (Sandbox Code Playgroud)

这将列出总内容小于 50K 的目录。如果您对结果感到满意并想删除它们,请添加| xargs -d \\n rm -rf到命令行的末尾。

  • @BrianFitzpatrick 还有 [ncdu](http://dev.yorhel.nl/ncdu) 偶尔会有用。 (3认同)