Liste tous les fichiers qui n'ont pas d'extensions

11

Je souhaite répertorier tous les fichiers d'un répertoire sans extension.

Par exemple:

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

Quelle commande puis-je utiliser à la place ls -someOption?

NewMrd
la source
Habituellement, si vous souhaitez connaître les options d'une commande, lisez sa page de manuel en tapant "man <command>" dans le terminal. homme signifie manuel (aide) .par exemple - man ls
aaditya1234
@AadityaBagga Dans ce cas, la réponse ne se trouve pas dans le manuel.
wisbucky
Dans ce scénario, envisagez-vous .gitignoreune extension?
Amit Naidu

Réponses:

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

Vous constaterez que faire cela vous montrera le contenu de chaque répertoire dans le répertoire de travail. Si vous ne voulez pas, utilisez:

ls -d !(*.*)

Vous pouvez mettre shopt -s extglobvotre ~/.bashrcpour l'activer chaque fois que vous ouvrez un terminal. Il y a déjà une ligne dans l'Ubuntu par défaut ~/.bashrc(ligne 29 pour moi le 13.04) que vous pouvez décommenter pour l'activer (et globstar).

Voir le wiki de Greg pour plus d' informations sur les différentes options de englobement du shell. Notez que ceci est une propriété du shell bash plutôt que la lscommande, de sorte que vous pouvez l' utiliser avec d' autres commandes.

Vous pouvez également utiliser

ls --ignore='*.*'

ou

ls -I '*.*'

... qui est une interne lsoption, mais extglob peut être appliquée à toute commande arbitraire et est donc plus utile à mon avis.

evilsoup
la source
1
OP n'a pas mentionné que la coquille, mais je suppose que bash suppose. Si elle était ksh, pas extglob nécessaire. Par défaut, il suffit:ls !(*.*)
Runrig
1
@runrig Vous avez tout à fait correct, mais étant donné la nature fondamentale de la question que je supposais l'OP utilise le shell bash par défaut.
evilsoup
10

Les deux ls | grep -v \\.et ls | grep -v "\."fonctionne.

krowe
la source