É possível listar todos os arquivos com pelo menos 3 letras em seu nome?

1

Eu tenho que encontrar todos os arquivos que tenham no mínimo 3 letras, começando com a letra "l".

Estou usando isso, mas também me fornece os arquivos com menos de três letras.

ls | grep "^l"

É possível determinar um comprimento mínimo? Eu só sei que o char "?" é usado para comprimentos exatos.

    
por user130271 26.08.2015 / 02:18

2 respostas

3

Bash globs

Não use regex. Use globs (supondo que você esteja usando o bash).

ls l??*

Explicação

  • ? representa um único caractere.
  • * significa zero ou mais caracteres.

Regex

Se você realmente quisesse usar o regex, poderia usar

ls | grep "^l...*"

Explicação

  • . representa um único caractere.
  • .* significa zero ou mais caracteres.
por 26.08.2015 / 02:22
0

Aqui está uma solução alternativa usando find (deve funcionar se você não estiver usando bash ). Esta solução irá encontrar todos os arquivos e pastas (veja abaixo para a versão somente de arquivo) com 3 ou mais caracteres que comece com o caractere 'l' recursivamente (veja abaixo para não-recursivo) sob o local onde você executa a partir de.

find . -regex '.*/l[^/][^/][^/]*'

Uma versão não recursiva (uma que pesquisa apenas o diretório atual) é a seguinte.

find . -maxdepth 1 -regex '.*/l[^/][^/][^/]*'

Se você não quiser incluir pastas, use o seguinte em seu lugar.

find . -type f -regex '.*/l[^/][^/][^/]*'

ou (não recursivo)

find . -maxdepth 1 -regex '.*/l[^/][^/][^/]*'
    
por 26.08.2015 / 02:43