Listar todos os arquivos que não possuem extensões

10

Eu quero listar todos os arquivos em um diretório que não tenha extensões.

Por exemplo:

$ ls
a.txt    b      c.pdf     d     e.png
$ ls -someOption
b       d

Qual comando eu posso usar em vez de ls -someOption ?

    
por NewMrd 27.08.2013 / 18:15

2 respostas

12
shopt -s extglob ## enables extended globbing
ls !(*.*) ## matches every file except those containing a dot

Você descobrirá que isso mostrará o conteúdo de todos os diretórios no diretório de trabalho. Se você não quiser isso, use:

ls -d !(*.*)

Você pode colocar shopt -s extglob no seu ~/.bashrc para ativá-lo sempre que abrir um terminal. Já existe uma linha no padrão do Ubuntu ~/.bashrc (linha 29 para mim no 13.04) que você pode descomentar para habilitar isso (e globstar).

Veja o wiki do Greg para mais informações sobre as várias opções de globbing do shell. Note que esta é uma propriedade do shell bash em vez do comando ls , então você pode usá-lo com outros comandos.

Como alternativa, você pode usar

ls --ignore='*.*'

ou

ls -I '*.*'

... que é uma opção ls interna, mas extglob pode ser aplicado a qualquer comando arbitrário & amp; então é mais útil na minha opinião.

    
por evilsoup 27.08.2013 / 20:54
9

Ambos ls | grep -v \. e ls | grep -v "\." funcionam.

    
por krowe 27.08.2013 / 18:19