如何查找非空的小文件夹?

如何查找非空的小文件夹?

我想找到(然后删除)所有几乎为空的音乐文件夹(Banshee 仅删除音乐文件,而不会删除其中的其他文件)。

我尝试过:

find -type d -size -500k \;

但它也显示包含更大文件的文件夹。

find -type d -size -500k -exec du {} \;

显示正确的尺寸。

如何修改 find cmd 以仅显示小于 N 的文件夹?

答案1

我使用的一个命令(只要您不需要将其直接导入另一个脚本)是

du . | 排序 -rn

这会将最小的文件夹及其大小放在打印列表的底部。过滤掉较大的文件夹需要更多工作。

答案2

如果你只是想删除包含 N 个字节以下的文件夹,下面的一行代码就可以起作用:

du | awk '$1 <= 500 { print "rm -rf \"" substr($0, length($1)+2) "\""}' | sh

这是做什么的?连续:

  • du打印目录的大小及其路径
  • $1 <= 500是一个测试第一列是否小于 500(如果小于 500 字节)的条件
  • print在 awk 中打印rm -rf "/path/to/small/dir"
  • | sh将其通过管道传输到 sh 以便执行

您也可以使用 xargs 而不是将其通过管道传输到 sh 中,但我习惯这种方式。

相关内容