Linux终端中如何列出指定目录下大小为0的文件?
列出指定目录下大小为0的文件的实现方案
ls 命令本身没有提供直接按文件大小筛选的参数,你可以搭配以下两种方式实现需求:
方案1:使用find命令(推荐,准确率最高)
find 命令原生支持按文件大小筛选,直接执行以下命令即可,输出风格和你常用的 ls -lsh 一致:find /mydirectory -maxdepth 1 -type f -size 0 -ls
参数说明:
-maxdepth 1:仅搜索目标目录本身,不递归遍历子目录;如果需要包含子目录下的空文件,删除该参数即可-type f:仅筛选普通文件,排除空目录、符号链接等其他类型的文件-size 0:指定筛选条件为文件大小等于0-ls:以类ls -l的格式输出结果,包含文件大小、权限、修改时间等信息
如果你需要完全匹配 ls -lsh 的输出格式,可以调整为以下写法:find /mydirectory -maxdepth 1 -type f -size 0 -exec ls -lsh {} +
方案2:管道过滤现有ls命令输出
如果不想使用find命令,也可以直接对现有ls命令的输出做匹配筛选,注意该方案存在误匹配风险,若文件名或其他字段包含符合规则的字符串会输出错误结果,仅适合临时快速过滤使用:ls -lsh /mydirectory | grep '^ *0 '
该命令通过grep匹配行首后带任意空格+0+空格的行,刚好对应ls输出中第一列文件大小为0的条目。
内容的提问来源于stack exchange,提问作者Reagan Scoles
相关产品推荐
相关产品推荐

