仅列出常规文件

4 ls inode

我希望列出当前目录中的所有i节点的常规文件(即不是目录,链接或特殊文件),有ls -lall)。

我去man ls寻找,type只找到了这个,我在这方面不太明白:

--indicator-style=WORD

将带有 WORD 样式的指示符附加到条目名称:无(默认)、斜线 (-p)、文件类型 (--file-type)、分类 (-F)

我怎么能只列出带有ls -la(ll作为我在 Ubuntu 18.04 中的快捷方式) 的常规文件?

Kus*_*nda 10

find . -maxdepth 1 -type f -ls
Run Code Online (Sandbox Code Playgroud)

这将为您提供当前目录中的常规文件,其格式与您将获得的格式类似ls -lisa(但仅显示常规文件,感谢-type -f在命令行上)。

请注意-ls(由 BSD 引入)和-maxdepth(由 GNU 引入find)是非标准(尽管现在很常见)的扩展。POSIXly,你可以这样写:

find . ! -name . -prune -type f -exec ls -ldi {} +
Run Code Online (Sandbox Code Playgroud)

(这也有对文件列表进行排序的好处,但如果当前目录中有大量文件,则可能会在大的独立块中进行排序)。


Ste*_*itt 7

ls 没有执行此操作的选项,您不应该解析其输出来过滤常规文件。

find可用于查找和列出常规文件而不是ls. 另一种选择是使用 Zsh 及其全局限定符

ls -l -- *(D.)
Run Code Online (Sandbox Code Playgroud)

列出所有常规文件,包括名称以点开头的文件。