如何ls
使用 Linux 列出(使用)所有非空文件(大小 > 0)?
答案1
我会使用find dirname -not -empty -ls
,假设 GNU 发现。
答案2
这是一份工作寻找ls 不够强大。
find -maxdepth 1 -size +0 -print
-maxdepth 1
- 这告诉 find 仅搜索当前目录,删除以查看所有子目录或将数字更改为向下 2、3 或更多级别。
-size +0
这告诉 find 查找大小大于0
字节的文件。0
可以更改为您想要的任何大小。
-print
告诉 find 打印出它找到的文件的完整路径
编辑:
后期补充:您可能还应该添加-type f
上面的开关。这会告诉 find 仅查找文件。正如下面的评论中所述,该-print
开关实际上并不是必需的。
答案3
ls -l | awk '{if ($5 != 0) print $9}'
如果 你 有意 使用ls
, 你 需要 一点 帮助awk
.
答案4
Ls 几乎没有过滤文件的选项:这不是它的工作。对于简单情况(通过通配符),过滤文件是 shell 的工作;对于复杂情况,过滤文件是 find 的工作。
在 zsh 中,您可以使用L
globbing 限定符来仅保留大小 >0 的文件(.
限定符限制为常规文件):
ls *(.L+0)
其他 shell 的用户必须使用 find。使用 GNU find(主要在 Linux 上找到):
find -maxdepth 1 -type f ! -empty -exec ls {} +
符合 POSIX 的方式是:
find . -type f -size +0c -exec ls {} + -o -name . -o -prune
如果ls
这不仅仅是一个例子,而您仅仅想进行目视检查,那么您可以按大小排序:ls -S
。