Перечислите все файлы, которые не имеют расширений

Я хочу перечислить все файлы в каталоге, которые не имеют расширений.

Например:

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

Какую команду я могу использовать вместо ls -someOption?

11
задан 29 August 2013 в 16:59

2 ответа

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; на мой взгляд, так полезнее.

0
ответ дан 29 August 2013 в 16:59

Оба ls | grep -v \\. и ls | grep -v "\." работает.

0
ответ дан 29 August 2013 в 16:59

Другие вопросы по тегам:

Похожие вопросы: