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
?
.gitignore
uma extensão?
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
?
.gitignore
uma extensão?
Respostas:
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 extglob
em sua ~/.bashrc
tê-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 ls
comando, portanto você pode usá-lo com outros comandos.
Como alternativa, você pode usar
ls --ignore='*.*'
ou
ls -I '*.*'
... que é uma ls
opção interna , mas o extglob pode ser aplicado a qualquer comando arbitrário e, portanto, é mais útil na minha opinião.
ls !(*.*)