我必须找到所有至少包含 3 个字母(以字母“l”开头)的文件。
我正在使用这个,但它也给了我少于 3 个字母的文件。
LS | grep“^l”
是否可以确定最小长度?我只知道字符“?”用于精确长度。
答案1
Bash 通配符
不要使用正则表达式。使用球体(假设您使用的是 bash)。
ls l??*
解释
?
代表单个字符。*
代表零个或多个字符。
正则表达式
如果你真的想使用正则表达式,你可以使用
ls | grep "^l...*"
解释
.
代表单个字符。.*
代表零个或多个字符。
答案2
这是使用的替代解决方案find
(如果您不使用,应该可以使用bash
)。此解决方案将查找具有 3 个或更多以字符“l”开头的字符的所有文件和文件夹(请参阅下文的仅文件版本)递归地(参见下文的非递归)在您执行它的位置下。
find . -regex '.*/l[^/][^/][^/]*'
A非递归版本(仅搜索当前目录的版本)如下。
find . -maxdepth 1 -regex '.*/l[^/][^/][^/]*'
如果您不想包含文件夹,可以使用以下内容。
find . -type f -regex '.*/l[^/][^/][^/]*'
或(非递归)
find . -maxdepth 1 -regex '.*/l[^/][^/][^/]*'