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