Você não pode listar diretamente os arquivos terminando apenas em letras minúsculas com um único comando e globbing de arquivos básicos. Aqui está o porquê e como contornar isso:
Por que é complicado: *
Globbing básico: As conchas Unix Standard usam padrões básicos de globbing (*,?, [], etc.). Isso pode corresponder a qualquer caso de caractere, mas não pode distinguir entre maiúsculas e minúsculas para filtragem específica.
A solução:usando `find` e` grep` Você pode combinar `find` e` grep` para conseguir isso. Aqui está como:
`` `BASH
encontrar . -Type f -Print0 | grep -ez '^./[^/]*[a -z] \.? [^/]*$' | XARGS -0 LS -L
`` `
Explicação: 1.
`encontre. -Type f -Print0`: - `encontre .`:começa a pesquisar no diretório atual (`. ')
- `-Type f`:procura apenas arquivos regulares
- `-Print0`:impressões encontradas arquivos separados por caracteres nulos (mais seguro para nomes de arquivos com espaços)
2.
`grep -ez '^./[^/]*[A -z] \.? [^/]*$'`: - `Grep`:filtra a saída de` find`
- `-e`:permite expressões regulares estendidas para mais flexibilidade
-`-z`:trata a entrada como strings terminados nulos
-
A expressão regular: - `^./`:Corresponde ao início da linha, seguido de "./" (para corresponder aos caminhos relativos)
- `[^/]*`:corresponde a todos os caracteres, exceto "/" (garantindo que ainda estamos dentro do nome do arquivo)
- `[a-z]`:corresponde a uma única letra minúscula
- `\.? [^/]*`:Corresponde a um ponto opcional (`. ') Seguido por qualquer caractere, exceto"/"
- `$`:corresponde ao fim da linha
3.
-`XARGS -0`:pega a lista de arquivos terminada em nulo de` Grep` e cria argumentos de comando
- `ls -l`:lista os arquivos (você pode alterar isso para qualquer comando que deseja executar nos arquivos filtrados)
Notas importantes: *
Arquivos ocultos: Isso encontrará arquivos ocultos (começando com '.') Que atendem aos critérios.
*
Sensibilidade do caso: A expansão do nome do arquivo do seu shell pode ser sensível ou insensível a minúsculas.
Deixe -me saber se você quiser refinar mais a pesquisa!