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]+$'
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.
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.
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.
Você pode usar ls +([0-9]) para corresponder apenas aos arquivos com nomes numéricos.
Tags command-line linux linux-mint