регулярное выражение для сопоставления файлов - PullRequest
0 голосов
/ 01 июля 2010

Я использовал следующее RE:

^file(\d{1,3})(\w*)(?:\.(\d{0,3})(\w*))? 

Для соответствия следующему

 file1.bla

или

 file1.1

или

 file1.1.bla

но после:

ls "^file(\d{1,3})(\w*)(?:\.(\d{0,3})(\w*))?"

Я не вижу совпадений соответствующих файлов, почему? Яэль

Ответы [ 4 ]

2 голосов
/ 02 июля 2010

ls поддерживает только простое сопоставление с? и * и []

, если вам нужно использовать регулярные выражения, используйте find

find . -regex '.*/regularexpression'
2 голосов
/ 01 июля 2010

Используйте ls -1 | grep "^file(\d{1,3})(\w*)(?:\.(\d{0,3})(\w*))?" вместо.Это передает вывод ls в grep, а grep фильтрует ввод (который передается из ls) с помощью регулярного выражения.

0 голосов
/ 02 июля 2010

лс -1 |perl -ne 'печатать, если /^file(\dndom1,3 coming)(\w*)(?:.(\dndom0,3 rout)(\w*))?/'

(grep -P должен использовать регулярное выражение Perl, но в моей системе это не работает. Единственный способ убедиться, что вы используете регулярные выражения Perl - это использовать Perl.)

0 голосов
/ 01 июля 2010

То, что вы могли бы использовать, это глобализация имени файла оболочки (менее мощное сопоставление, чем у RE), описанная здесь и в других местах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...