繁体   English   中英

查找具有特定数量字母的字符串,扩展名包含在grep中

[英]Finding strings with a specific number of letters, extensions included with grep

如果我管道lsgrep ,我怎么能返回一个文件列表,条件是它们只有x个字母,包括扩展名?

所以,例如,如果ls给了我:

abcde.jav a156e.exc test.c prog1.c qwert r.c 

我正在寻找包含严格5个字母的所有文件,包括扩展名:

a156e.exc test.c prog1.c qwert

我试过了:

ls | grep '^[a-z]${5}'
ls | grep "^[a-z]|[a-z]$"

和其他类似的东西,但我似乎无法得到它。 似乎解决方案应该非常简单,但我无法弄清楚。 任何帮助,将不胜感激。

您可以使用以下表达式:

实例

^([^a-z]*[a-z][^a-z]*){5}$

说明:

  • ^ - 表示字符串开头的锚点
  • ([^az]*[az][^az]*) - 与零个或多个非字母字符之间的单个字母匹配的组
  • {5} - 匹配前一组5次
  • $ - 表示字符串结尾的锚点。

用法:

ls | grep -E '^([^a-z]*[a-z][^a-z]*){5}$'

或没有ls

for f in *; do
  if [[ $f =~ ^([^a-z]*[a-z][^a-z]*){5}$ ]]
    then
      echo $f
  fi
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM