仅列出当前目录中的常规文件(但不列出目录)

丹尼尔·库尔曼

我可以ls -ld */用来列出当前目录中的所有目录条目。是否有类似的简单方法仅列出当前目录中的所有常规文件?我知道我可以使用查找

find . -maxdepth 1 -type f

或统计

stat -c "%F %n" * | grep "regular file" | cut -d' ' -f 3-

但是这些并没有让我觉得自己太过优雅。是否有一种很好的简短方法仅列出常规文件(我不在乎设备,管道等),而不列出当前目录的子目录?列出符号链接也将是一个加号,但不是必须的。

乌尔里希·丹格尔

使用zshand Glob限定词,您可以轻松地直接表达它,例如:

echo *(.)

只会返回常规文件列表,也可能会返回错误,具体取决于您的配置。

对于非目录:

echo *(^/)

(将包括符号链接(包括目录),命名管道,设备,套接字,门...)

echo *(-.)

用于常规文件和指向常规文件的符号链接。

echo *(-^/)

用于非目录,也没有指向目录的符号链接。

另外,D如果您想包含D ot文件(隐藏文件),请参阅遍历限定符,例如*(D-.)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章