Я хочу перечислить все файлы в каталоге, которые не имеют расширений.
Например:
$ ls
a.txt b c.pdf d e.png
$ ls -someOption
b d
Какую команду я могу использовать вместо ls -someOption
?
.gitignore
расширение?
Я хочу перечислить все файлы в каталоге, которые не имеют расширений.
Например:
$ ls
a.txt b c.pdf d e.png
$ ls -someOption
b d
Какую команду я могу использовать вместо ls -someOption
?
.gitignore
расширение?
Ответы:
shopt -s extglob ## enables extended globbing
ls !(*.*) ## matches every file except those containing a dot
Вы обнаружите, что при этом будет показано содержимое каждого каталога в рабочем каталоге. Если вы не хотите этого, используйте:
ls -d !(*.*)
Вы можете поместить shopt -s extglob
в ваших , ~/.bashrc
чтобы он активируется при открытии терминала. В Ubuntu по умолчанию уже есть строка ~/.bashrc
(для меня строка 13.04.04), которую вы можете раскомментировать, чтобы включить эту функцию (и globstar).
См . Вики Грега для получения дополнительной информации о различных параметрах оболочки. Обратите внимание, что это свойство оболочки bash, а не ls
команды, поэтому вы можете использовать его с другими командами.
Кроме того, вы можете использовать
ls --ignore='*.*'
или
ls -I '*.*'
... которая является внутренней ls
опцией, но extglob может быть применен к любой произвольной команде и поэтому, на мой взгляд, более полезен.
ls !(*.*)