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
?
.gitignore
rozszerzenie?
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
?
.gitignore
rozszerzenie?
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 extglob
w twojej ~/.bashrc
mieć 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 ls
polecenia, więc możesz używać go z innymi poleceniami.
Alternatywnie możesz użyć
ls --ignore='*.*'
lub
ls -I '*.*'
... która jest ls
opcją wewnętrzną , ale extglob można zastosować do dowolnego dowolnego polecenia, więc moim zdaniem jest bardziej użyteczny.
ls !(*.*)