我在一个~/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
到命令行的末尾。