Como isso funciona ls * [^ 0-9] * [duplicado]

1
    

Esta pergunta já tem uma resposta aqui:

    

Estou aprendendo os curingas. eu vejo isso ls *[0-9]* listaria todos os arquivos / diretórios com números em seus nomes, então não deveria ls *[^0-9]* listar todos os arquivos / diretórios sem números no meio de seu nome? Eu vejo que alguns dos arquivos que o comando listou tem números.

file1.txt e file1~ foram os que foram listados.

    
por Sajjeev 27.09.2018 / 22:50

1 resposta

3

[0-9] corresponde a qualquer dígito, então *[0-9]* corresponde a qualquer string que tenha pelo menos um dígito.

[^0-9] corresponde ao caractere que não é um dígito, portanto *[^0-9]* corresponde a qualquer string que tenha pelo menos um não dígito.

file1.txt tem dígitos e não dígitos, portanto, corresponde aos dois padrões.

Com padrões regulares de nome de arquivo, não há como usar um único padrão para corresponder a uma string que não contenha um caractere ou caracteres específicos.

Por outro lado, com expressões regulares, ^[^0-9]+$ corresponderia às cadeias que são feitas inteiramente de não dígitos, assim como o glob% estendido+([^0-9]) no Bash ou no ksh. (precisa de shopt -s extglob no Bash.)

    
por 27.09.2018 / 23:05

Tags