我想找到(然后删除)所有几乎为空的音乐文件夹(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 中,但我习惯这种方式。