Chcę wyświetlić listę wszystkich plików w katalogu, który nie ma rozszerzeń.
Na przykład:
$ ls
a.txt b c.pdf d e.png
$ ls -someOption
b d
Jakiego polecenia mogę użyć zamiast ls -someOption?
.gitignorerozszerzenie?
Chcę wyświetlić listę wszystkich plików w katalogu, który nie ma rozszerzeń.
Na przykład:
$ ls
a.txt b c.pdf d e.png
$ ls -someOption
b d
Jakiego polecenia mogę użyć zamiast ls -someOption?
.gitignorerozszerzenie?
Odpowiedzi:
shopt -s extglob ## enables extended globbing
ls !(*.*) ## matches every file except those containing a dot
Przekonasz się, że zrobienie tego spowoduje wyświetlenie zawartości każdego katalogu w katalogu roboczym. Jeśli nie chcesz tego, użyj:
ls -d !(*.*)
Można umieścić shopt -s extglobw twojej ~/.bashrcmieć ono aktywowane przy każdym otwarciu terminala. W domyślnym Ubuntu jest już wiersz ~/.bashrc(wiersz 29 dla mnie 13.04), którego możesz odkomentować, aby to włączyć (i globstar).
Zobacz wiki Grega, aby uzyskać więcej informacji na temat różnych opcji globowania powłoki. Zauważ, że jest to właściwość powłoki bash zamiast lspolecenia, więc możesz używać go z innymi poleceniami.
Alternatywnie możesz użyć
ls --ignore='*.*'
lub
ls -I '*.*'
... która jest lsopcją wewnętrzną , ale extglob można zastosować do dowolnego dowolnego polecenia, więc moim zdaniem jest bardziej użyteczny.
ls !(*.*)