Je veux lister tous les fichiers d'un répertoire qui n'ont pas d'extensions.
Par exemple:
$ ls
a.txt b c.pdf d e.png
$ ls -someOption
b d
Quelle commande puis-je utiliser à la place de ls -someOption
?
shopt -s extglob ## enables extended globbing
ls !(*.*) ## matches every file except those containing a dot
Vous constaterez que cela vous montrera le contenu de chaque répertoire du répertoire de travail. Si vous ne le souhaitez pas, utilisez:
ls -d !(*.*)
Vous pouvez mettre shopt -s extglob
dans votre ~/.bashrc
pour l'activer à chaque ouverture d'un terminal. Il existe déjà une ligne dans le code par défaut Ubuntu ~/.bashrc
(la ligne 29 pour moi le 13.04) que vous pouvez supprimer pour commenter l'activer (et globstar).
Voir wiki de Greg pour plus d'informations sur les différentes options de globbing du Shell. Notez qu'il s'agit d'une propriété du shell bash plutôt que de la commande ls
. Vous pouvez donc l'utiliser avec d'autres commandes.
Alternativement, vous pouvez utiliser
ls --ignore='*.*'
ou
ls -I '*.*'
... qui est une option interne ls
, mais extglob peut être appliqué à n'importe quelle commande arbitraire et est donc plus utile à mon avis.
ls | grep -v \\.
et ls | grep -v "\."
fonctionnent tous les deux.