Por que grep
não está funcionando corretamente
Não funciona porque você precisa informar grep
que .*
é o padrão real que você está procurando.
grep '.*' -c list3
Se você não usar as aspas simples, seu shell expandirá .*
para os nomes de todos os arquivos em seu diretório. Isso se chama Expansão do nome de arquivo . Por exemplo, a.txt b.txt
, então grep
verá:
grep a.txt b.txt -c list3
Como as citações simples impedem que a expansão aconteça, esse é o caminho para vá aqui.
Onde seu comando grep
está errado:
A propósito, você está indo na direção errada com o padrão aqui. O período .
em uma expressão regular corresponde a qualquer caractere, e não ao ponto literal. Consulte a página man
para mais informações. Então, seu regex diz atualmente: "encontre qualquer caractere e depois uma seqüência de qualquer caractere". Bastante redundante.
Se você realmente pretende combinar:
[dot] [anything else]
... você precisa escapar do ponto:
\.*
Onde seu comando find
pode ser melhorado:
Eu não sei o que você quer dizer para se livrar de
\( ! -iname ".*" \)
Seu comando find
prefixará qualquer arquivo com o ponto para o diretório de trabalho atual, portanto você não removerá nada aqui. Você poderia ter acabado de executar:
find . -maxdepth 1 -type f