Usei o seguinte comando + REGEX para listar todos os arquivos que contêm números de cartão em um conjunto de arquivos.
grep -r -l -e '[3-6]\d{3}([\ \-]?)\d{4}([\ \-]?)\d{4}([\ \-]?)\d{3,4}' *
Testei este REGEX em um aplicativo diferente e foi bem-sucedido.
Responder1
O grep simples usa expressões regulares básicas. Seu regex usa -d
e ?
que {m,n}
não são reconhecidos.
Você quer grep -E
, mas isso pode não reconhecer \d
. Se não, mude para[0-9]
grep -Erle '[3-6][0-9]{3}([ -]?)[0-9]{4}([ -]?)[0-9]{4}([ -]?)[0-9]{3,4}' *
Ou use grep -P
para usar expressões regulares compatíveis com Perl
Referência:https://www.gnu.org/software/gnulib/manual/html_node/Regular-expression-syntaxes.html