如何列出目录中不以字符L开头的所有文件夹?

如何列出目录中不以字符L开头的所有文件夹?

我想列出所有不以L开头的文件夹。

ls [L]* ///gives all the folders starting with L 

我想反向搜索并列出所有不以 L 开头的文件夹?

答案1

使用^

ls [^L]*

执行您想要的操作 - 好吧,假设ls [L]*对应于您想要的操作(它列出了以“L”开头的所有内容,而不仅仅是文件夹)。

cuonglm 的回答显示如何将列表限制为文件夹,使用zsh.

答案2

你用的东西叫做通配,它无法在 POSIX shell 中过滤目录或文件。

zsh

print -rl -- [^L]*(/)

如果你想要隐藏目录:

print -rl -- [^L]*(D/)

正面:

find . ! -name . -prune ! -name 'L*' -type d

答案3

实际上,ls [L]*(相当于ls L*)列出了当前目录中非目录且名称以 开头的文件L,并列出了当前目录中名称以 开头的子目录的内容L。要列出当前目录中本身不是目录且名称以 开头的文件L,您需要传递-d选项:ls -d L*

匹配名称不以以下字符开头的文件L,您可以使用全局模式 [^L](也可以写成[!L],以与其他 shell 兼容)。[^L]匹配除 之外的任何一个字符L,因此[^L]*匹配以除 之外的任何字符开头的文件名L。由于文件名不能为空,因此[^L]*完全匹配不以L.

或者,如果extended_glob设置了该选项(大多数用户将其放在 中.zshrc),您可以使用^运算符来否定匹配:^L*匹配不匹配的文件名L*,即不以 开头的文件名L。此语法特定于 zsh。

相关内容