Bash 通配符

Bash 通配符

我必须找到所有至少包含 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[^/][^/][^/]*'

相关内容