Isso pode ser feito assim:
ls | grep -E '^(\W*[0-9]*[a-zA-Z]){7}\W*[0-9]*$'
Isso inclui casos em que o primeiro e o último caractere são um dígito ou um caractere não alfanumérico.
Ou mais curto
ls | grep -Ei '^([^a-z]*[a-z]){7}[^a-z]*$'
Digamos que eu tenha uma lista dos seguintes arquivos no meu diretório atual:
lab1.jav
mytst2
pie.c
prog2.c
tst3.ex
tst5:5.tlab2jav
lab2jav.ext
new.c
prog1.c
tst1
tst4.ex
c tst6:6123.tA7-tst.c
fred.txt
E eu preciso listar os arquivos com um total de 7 letras, por exemplo. Como você faria isso? Eu tentei sem sucesso:
ls | egrep -i '[a-z]{7}'
Eu acho que é porque os pontos estão no caminho, existe uma maneira simples de fazer isso?
Isso pode ser feito assim:
ls | grep -E '^(\W*[0-9]*[a-zA-Z]){7}\W*[0-9]*$'
Isso inclui casos em que o primeiro e o último caractere são um dígito ou um caractere não alfanumérico.
Ou mais curto
ls | grep -Ei '^([^a-z]*[a-z]){7}[^a-z]*$'