grep procura o primeiro argumento (o padrão) nos arquivos transmitidos na linha de comando ou stdin se nenhum arquivo for passado.
Sem a cota, seu shell expandirá lect* para todos os arquivos no diretório que começam com lect . Seu comando será então:
grep lect1.txt lect2.doc lect3.doc
, o que significa que procura o texto lect1.txt nos dois .doc arquivos . A menos que um dos arquivos .doc tenha a frase lect1.txt , ele não retornará nada. Para ser mais preciso, ele procurará lect1 seguido por qualquer caractere (o . ) seguido por txt , então também encontrará lect1-txt e lect1xtxt etc)
Em seu segundo exemplo, você citou "lect.*" para que o shell não o expanda e seja passado como é para grep . Com apenas um padrão passado como argumento, grep pesquisará os nomes de arquivos passados em stdin para o padrão, que é o que você é depois que eu acredito.