Como posso obter arquivos com nomes numéricos usando o comando ls?

1

Na linha de comando do linux, como posso listar apenas nomes de arquivos numéricos (somente nomes com 0 a 9) no diretório atual?

Esta é uma pergunta subseqüente a Como posso obter a lista de ids de processo no sistema no prompt de comando do linux? , onde eu corri ls on /proc/ . Agora estou tentando excluir tudo, exceto os diretórios de ID do processo.

    
por techfun 12.02.2014 / 19:51

4 respostas

2

Usando ls canalizado para grep -E (grep estendido com recursos adicionais de regexp) para pesquisar todos os nomes de arquivos com apenas caracteres numéricos:

ls | grep -E '^[0-9]+$'
    
por 12.02.2014 / 20:18
4

Apesar do título da pergunta, quero apresentar uma solução com find . Ele tem uma opção de regex ( -regex ), portanto, [0-9]* corresponderá aos nomes de arquivos que consistem apenas em dígitos.

Para encontrar apenas arquivos ( -type f ) recursivamente abaixo do diretório atual ( . ) use

find . -type f -regex ".*/[0-9]*"

O .*/ no regex é necessário, porque regex " é uma correspondência em todo o caminho, não em uma pesquisa. " ( man find ). Então, se você quiser encontrar apenas arquivos no diretório atual, use \./ :

find . -type f -regex "\./[0-9]*"

No entanto, isso não é muito ideal, já que também encontramos procuras recursivas neste caso e apenas filtra os resultados desejados posteriormente.

    
por 12.02.2014 / 21:51
4

Se você quiser usar ls , poderá usar:

ls *[[:digit:]]*

O operador * splat corresponderá a qualquer [[:digit:]] . Você também pode usar:

ls *[0-9]*

Que também corresponde ao arquivo ou diretório com um dígito de 0 a 9.

Se você tiver subdiretórios que correspondam ao padrão glob, você poderá usar a opção -d para fazer com que o ls não os recrute.

    
por 12.02.2014 / 20:01
0

Você pode usar ls +([0-9]) para corresponder apenas aos arquivos com nomes numéricos.

    
por 01.01.2018 / 07:39