Listen Sie alle Dateien auf, die keine Erweiterungen haben

11

Ich möchte alle Dateien in einem Verzeichnis auflisten, das keine Erweiterungen hat.

Beispielsweise:

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

Welchen Befehl kann ich anstelle verwenden ls -someOption?

NewMrd
quelle
Wenn Sie die Optionen für einen Befehl kennen möchten, lesen Sie normalerweise die Manpage, indem Sie im Terminal "man <Befehl>" eingeben. Mann steht für Handbuch (Hilfe). Zum Beispiel Mann ls
aaditya1234
@AadityaBagga In diesem Fall wird die Antwort nicht im Handbuch gefunden.
wisbucky
Ziehen Sie in diesem Szenario .gitignoreeine Erweiterung in Betracht ?
Amit Naidu

Antworten:

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

Sie werden feststellen, dass Ihnen dabei der Inhalt jedes Verzeichnisses im Arbeitsverzeichnis angezeigt wird. Wenn Sie dies nicht möchten, verwenden Sie:

ls -d !(*.*)

Sie können shopt -s extglobIhre Funktion ~/.bashrcaktivieren, wenn Sie ein Terminal öffnen. Es gibt bereits eine Zeile im Standard-Ubuntu ~/.bashrc(Zeile 29 für mich am 13.04), die Sie auskommentieren können, um dies (und globstar) zu aktivieren.

Weitere Informationen zu den verschiedenen Globbing-Optionen der Shell finden Sie in Gregs Wiki . Beachten Sie, dass dies eher eine Eigenschaft der Bash-Shell als des lsBefehls ist, sodass Sie sie mit anderen Befehlen verwenden können.

Alternativ können Sie verwenden

ls --ignore='*.*'

oder

ls -I '*.*'

... was eine interne lsOption ist, aber extglob kann auf jeden beliebigen Befehl angewendet werden und ist meiner Meinung nach nützlicher.

Übelsuppe
quelle
1
OP hat nicht erwähnt, welche Shell, obwohl ich denke, Bash wird angenommen. Wenn es ksh wäre, wäre kein Extglob erforderlich. Standardmäßig nur:ls !(*.*)
Runrig
1
@runrig Du bist ganz richtig, aber angesichts der grundlegenden Natur der Frage habe ich angenommen, dass das OP die Standard-Bash-Shell verwendet.
Evilsoup
10

Beides ls | grep -v \\.und ls | grep -v "\."funktioniert.

Krowe
quelle