仅列出常规文件

仅列出常规文件

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

我去man ls搜索type并发现只有这个我在这方面不太明白:

--指示器样式=WORD

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

我怎样才能只列出常规文件ls -lall作为 Ubuntu 18.04 中的快捷方式)?

答案1

find . -maxdepth 1 -type f -ls

这将为您提供当前目录中的常规文件,其格式类似于您所获得的格式ls -lisa(但仅显示常规文件,这要归功于-type -f命令行)。

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

find . ! -name . -prune -type f -exec ls -ldi {} +

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

答案2

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

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

ls -l -- *(D.)

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

答案3

当你使用 -a 时,会显示所有隐藏的内容;隐藏的文件和文件夹。您可能希望使用 find 命令来代替 ls。这应该可以帮助您开始:

find -type f -exec ls -la {} \;

您需要首先更改为要搜索的目录。

相关内容