Я использовал следующее 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*))?"
Я не вижу совпадений соответствующих файлов, почему? Яэль
ls поддерживает только простое сопоставление с? и * и []
ls
, если вам нужно использовать регулярные выражения, используйте find
find . -regex '.*/regularexpression'
Используйте ls -1 | grep "^file(\d{1,3})(\w*)(?:\.(\d{0,3})(\w*))?" вместо.Это передает вывод ls в grep, а grep фильтрует ввод (который передается из ls) с помощью регулярного выражения.
ls -1 | grep "^file(\d{1,3})(\w*)(?:\.(\d{0,3})(\w*))?"
лс -1 |perl -ne 'печатать, если /^file(\dndom1,3 coming)(\w*)(?:.(\dndom0,3 rout)(\w*))?/'
(grep -P должен использовать регулярное выражение Perl, но в моей системе это не работает. Единственный способ убедиться, что вы используете регулярные выражения Perl - это использовать Perl.)
То, что вы могли бы использовать, это глобализация имени файла оболочки (менее мощное сопоставление, чем у RE), описанная здесь и в других местах