повторение в GNU найти регулярное выражение - PullRequest
2 голосов
/ 30 августа 2011

Я пытаюсь найти все файлы, чье имя содержит ровно 14 цифр (я пытаюсь найти метку времени в имени файла). Я не уверен, как заставить GNU правильно найти синтаксис регулярных выражений для повторений.

Я пробовал find -regex ".*[0-9]{14} и find -regex ".*[0-9]\{14\}, ни один из них не дает никаких результатов. Можете ли вы помочь мне с синтаксисом?

Ответы [ 3 ]

3 голосов
/ 30 августа 2011

помните, GNU find's -regex соответствует целому пути. В любом случае, вы можете использовать комбинацию find и grep для выполнения задачи, например, чтобы найти ровно 14 цифр без других символов

find . -type f -printf "%f\n" | grep -E "\b[0-9]{14}\b"

изменить в соответствии с вашими потребностями

2 голосов
/ 30 августа 2011

Попробуйте изменить параметр -regextype для поиска.

Изменяет синтаксис регулярного выражения, понятный тестам -regex и -iregex, которые происходят позже в командной строке.В настоящее время реализованы следующие типы: emacs (по умолчанию), posix-awk, posix-basic, posix-egrep и posix-extended.

0 голосов
/ 30 августа 2011

Странно, я просто попробовал и не смог получить эту работу.В любом случае вот обходной путь (соответствует 2 последовательным числам):

$ls
a123.txt  a1b2c3.txt  a45.txt  b123.txt
$find -regex '.*[^0-9][0-9][0-9][^0-9].*'
./a45.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...