Ubuntu 14.x. Usando grep para procurar todos os arquivos linuxtest-client2 . Isso inclui várias extensões de arquivo (csr, crt, chave). Quando eu grep para a parte do meio do nome do arquivo, "2.", ele também retorna linhas que contêm "2" além de "2". ao usar ls -l com ele. Isso faz com que sejam retornados resultados com "2" no tamanho do arquivo, data e hora.
Por que os tamanhos de arquivo estão sendo acionados por este grep quando não há ponto após eles?:
root@ip-10-198-0-205:/etc/easy-rsa# ls -ltr keys/ | grep -E '*2.*'
total 228
-rw------- 1 root root 3272 Oct 15 18:28 ca.key
-rw-r--r-- 1 root root 2451 Oct 15 18:28 ca.crt
-rw------- 1 root root 3268 Oct 15 18:31 server.key
-rw-r--r-- 1 root root 769 Oct 15 18:42 dh4096.pem
-rw-r--r-- 1 root root 8244 Oct 19 15:36 02.pem
-rw-r--r-- 1 root root 8250 Oct 19 19:21 03.pem
-rw------- 1 root root 3394 Oct 23 19:48 removemetest.key
-rw-r--r-- 1 root root 1785 Oct 23 19:48 removemetest.csr
-rw-r--r-- 1 root root 8264 Oct 23 19:48 removemetest.crt
-rw-r--r-- 1 root root 8264 Oct 23 19:48 04.pem
-rw------- 1 root root 3394 Oct 23 20:50 revoketest449.key
-rw-r--r-- 1 root root 1789 Oct 23 20:50 revoketest449.csr
-rw-r--r-- 1 root root 8270 Oct 23 20:50 revoketest449.crt
-rw-r--r-- 1 root root 8270 Oct 23 20:50 05.pem
-rw-r--r-- 1 root root 3633 Oct 23 20:50 revoke-test.pem
-rw-r--r-- 1 root root 1182 Oct 23 20:50 crl.pem
-rw------- 1 root root 3394 Oct 23 20:54 linuxtest-client1.key
-rw-r--r-- 1 root root 1793 Oct 23 20:54 linuxtest-client1.csr
-rw-r--r-- 1 root root 3 Oct 23 20:54 serial.old
-rw-r--r-- 1 root root 8287 Oct 23 20:54 linuxtest-client1.crt
-rw-r--r-- 1 root root 909 Oct 23 20:54 index.txt.old
-rw-r--r-- 1 root root 21 Oct 23 20:54 index.txt.attr.old
-rw-r--r-- 1 root root 8287 Oct 23 20:54 06.pem
-rw------- 1 root root 3394 Oct 26 17:57 linuxtest-client2.key
-rw-r--r-- 1 root root 1793 Oct 26 17:57 linuxtest-client2.csr
-rw-r--r-- 1 root root 3 Oct 26 17:57 serial
-rw-r--r-- 1 root root 8287 Oct 26 17:57 linuxtest-client2.crt
-rw-r--r-- 1 root root 21 Oct 26 17:57 index.txt.attr
-rw-r--r-- 1 root root 1058 Oct 26 17:57 index.txt
-rw-r--r-- 1 root root 8287 Oct 26 17:57 07.pem
Mas se eu não usar -l em ls, ele retornará os resultados adequados que estou procurando, então claramente meu regex está correto:
root@ip-10-198-0-205:/etc/easy-rsa# ls keys/ | grep -E '*2.*'
02.pem
linuxtest-client2.crt
linuxtest-client2.csr
linuxtest-client2.key
Grep trata o padrão como uma expressão regular básica por padrão, o que significa
.
que corresponderá a qualquer caractere único. Você pode simplesmente escapar de.
para que signifique um período literal.lhe dará o que você está procurando, ou você pode dizer
grep
para procurar apenas strings fixas, não regex, comoComo você dá o sinalizador ao grep
-E
, ele tentará usar o regex estendido, mas parece que você está usando curingas do shell, o que não significa o que eles fazem no regex. O*
in regex significa 0 ou mais do grupo ou caractere anterior e.
significa qualquer caractere, portanto,.*
in regex significa 0 ou mais de qualquer caractere. Entãogrep -E "*2.*"
é realmente o mesmogrep 2
que é por isso que está combinando tantas coisas extras nals -l
versãoClaro, você pode simplesmente deixar o shell lidar com isso para você com curingas