Listar todos os arquivos que não têm extensões

11

Quero listar todos os arquivos em um diretório que não possui extensões.

Por exemplo:

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

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

NewMrd
fonte
Geralmente, se você quiser conhecer as opções de um comando, leia sua página de manual digitando "man <comando>" no terminal. homem representa manual (help) .para man ls exemplo-
aaditya1234
@AadityaBagga Nesse caso, a resposta não foi encontrada no manual.
wisbucky
Nesse cenário, você considera .gitignoreuma extensão?
Amit Naidu

Respostas:

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

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

ls -d !(*.*)

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

Veja o wiki de Greg para obter mais informações sobre as várias opções de globbing do shell. Observe que essa é uma propriedade do shell bash e não do lscomando, portanto você pode usá-lo com outros comandos.

Como alternativa, você pode usar

ls --ignore='*.*'

ou

ls -I '*.*'

... que é uma lsopção interna , mas o extglob pode ser aplicado a qualquer comando arbitrário e, portanto, é mais útil na minha opinião.

evilsoup
fonte
1
O OP não mencionou qual shell, embora eu ache que o bash é assumido. Se fosse ksh, nenhum extglob é necessário. Por padrão, apenas:ls !(*.*)
runrig
1
@runrig Você está certo, mas dada a natureza básica da pergunta, presumi que o OP está usando o shell bash padrão.
precisa saber é
10

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

krowe
fonte