2015-09-24 2 views
0

Я пытаюсь найти все имена файлов в таком формате: .Regex с egrep, чтобы найти строки, состоящие из имен файлов <string>. <string>

Так что я хочу, чтобы две непустые строки состояли из ТОЛЬКО английских букв (a-z или A-Z), разделенных точкой.

Примеры:

file.txt (действительный)

string.c (действительные)

file..txt (недействительный - есть два периода)

др. (неверно - требуется строка альфа после периода)

al. TXT (недействительный - есть пробел после периода)


Я хочу сделать это с помощью задать расширенное, но у меня возникают некоторые проблемы, выяснить это

Это мое выражение до сих пор, что я знаю, найдут линии, которые имеют больше периодов, чем я хочу:

".+\..+" 

Как исправить это?

+0

Вы хотите t в grep имена файлов, заданные 'find' или' ls'? Можете ли вы использовать регулярное выражение в find/ls? –

ответ

2

Попробуйте это:

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

спасибо! это работает –

2

Если вы ищете действительные имена файлов в текущем каталоге, вы можете комбинировать найти и как это задать расширенный:

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

или

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

Смежные вопросы