使用egrep的正则表达式查找由文件名<string>。<string>组成的行

时间:2015-09-24 19:24:58

标签: regex string bash

我试图以这种格式搜索所有文件名:

所以基本上我想要两个非空字符串,只包含由句点分隔的英文字母(a-z或A-Z)。

示例:

file.txt(有效)

string.c(有效)

file..txt(无效 - 有两个句号)

人。 (无效 - 期后需要字母串)

人。 txt(无效 - 句点后有空格)

我想用egrep做这件事,但我在解决这个问题上遇到了一些麻烦

到目前为止,这是我的表达,我知道会找到比我想要的句号更多的行:

 ".+\..+"

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

试试这个:

egrep '^[a-zA-Z]+\.[a-zA-Z]+$' file

答案 1 :(得分:2)

如果您在当前目录中查找有效的文件名,可以将find和egrep组合在一起:

ls | egrep '[a-zA-Z][\.][a-zA-Z]'

find . -type f | egrep '[a-zA-Z][\.][a-zA-Z]'