如何使用 ls 仅列出非空文件?

如何使用 ls 仅列出非空文件?

如何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 中,您可以使用Lglobbing 限定符来仅保留大小 >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

相关内容