求助:使用find命令仅查找小于4MB目录的正确方法
解决方法:修正find命令的类型过滤选项
你之前的命令问题出在**type d的写法错误**,find命令里指定查找目录的选项是-type d(必须带连字符),少了连字符会导致这个选项不生效,所以命令会匹配所有符合size条件的文件和目录。
正确的find命令写法
写法1:用MB单位(更直观)
查找当前目录下所有小于4MB的目录:
find . -type d -size -4M
查找根目录下所有小于4MB的目录(可添加屏蔽权限错误的参数):
find / -type d -size -4M 2>/dev/null
2>/dev/null用来屏蔽权限不足时的错误提示。
写法2:用字节单位(精准控制)
4MB等于4*1024*1024=4194304字节,若要严格按字节筛选小于4MB的目录,可写:
find . -type d -size -4194305c
(-size -Nc表示小于N字节,用4194305c能确保筛选出小于4MB的目录)
其他替代方法:用du命令筛选
如果想同时看到目录大小,也可以用du结合过滤命令实现:
du -h --max-depth=1 | awk '$1 ~ /^[0-3]\..*M|^[0-9]*K|^[0-9]$/ {print $2}'
该命令会列出当前目录下一级子目录的大小,过滤出小于4MB的目录并输出路径。若需要递归查找所有子目录,去掉--max-depth=1即可。
内容的提问来源于stack exchange,提问作者Paprotti
相关产品推荐
相关产品推荐

