Eu acho que você deseja usar um recurso do shell, não de ls
. Como uso o bash, verifiquei o que você deseja man bash
. Procure por "^ EXPANSÃO", (pressionando primeiro '/'). Excerto:
EXPANSÃO
A expansão é realizada na linha de comando após ter sido dividida em palavras. Existem tipos sete da expansão realizada: expansão cinta , tilde expansão , parâmetro e expansão de variáveis , substituição de comandos , expansão aritmética , dividindo palavra , e expansão de nome .
︙
... <recorte> ...
︙
Expansão do nome do caminho
Depois de repartição de palavras, a menos que o -f opção tiver sido definido, o bash verifica cada palavra para os personagens *
, ?
e [
. Se um desses caracteres aparecer, a palavra será considerada um padrão e substituída por uma lista classificada alfabeticamente de nomes de arquivos que correspondem ao padrão. ...
Recentemente, comecei a excluir arquivos com base na primeira letra, com um comando como:
$ ls ./[^t]*
Isso corresponderia a qualquer coisa que não comece com a letra t
. Se você adicionar mais caracteres entre colchetes, também excluirá os arquivos que começam com essas letras.
Procurando por um link, e eu tenho um bom! Consulte Correspondência de padrões . A partir daí, isso funcionaria para o seu caso:
$ ls -lrt ./!(temp_log.*)
Isso requer que a extglob
opção shell seja ativada usando o shopt
builtin ( shopt -s extglob
), conforme declarado por Gilles .
ls --hide='temp_log.$$'
deve funcionar. Você também pode / deve estender isso com caracteres curinga, dependendo de qual parte de todo o termotemp_log.$$
é.