Я использовал следующую команду+REGEX для получения списка всех файлов, содержащих номера карт в наборе файлов.
grep -r -l -e '[3-6]\d{3}([\ \-]?)\d{4}([\ \-]?)\d{4}([\ \-]?)\d{3,4}' *
Я протестировал это REGEX в другом приложении, и все прошло успешно.
решение1
Plain grep использует базовые регулярные выражения. Ваше регулярное выражение использует -d
и ?
и {m,n}
которые не распознаются.
Вы хотите grep -E
, но это может не распознать \d
. Если нет, измените его на[0-9]
grep -Erle '[3-6][0-9]{3}([ -]?)[0-9]{4}([ -]?)[0-9]{4}([ -]?)[0-9]{3,4}' *
Или используйте grep -P
для использования совместимых с Perl регулярных выражений
Ссылка:https://www.gnu.org/software/gnulib/manual/html_node/Regular-expression-syntaxes.html