Список всех файлов, которые не имеют расширений


11

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

Например:

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

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


Обычно, если вы хотите узнать параметры команды, прочитайте ее справочную страницу, набрав «man <command>» в терминале. человек выступает за руководство (помощь). например, man ls
aaditya1234

@AadityaBagga В этом случае ответ не найден в руководстве.
Висбуки

В этом сценарии вы считаете .gitignoreрасширение?
Амит Найду

Ответы:


14
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 может быть применен к любой произвольной команде и поэтому, на мой взгляд, более полезен.


1
OP не упомянул, какая оболочка, хотя я предполагаю, что bash предполагается. Если бы это был ksh, extglob не требуется. По умолчанию просто:ls !(*.*)
runrig

1
@runrig Вы совершенно правы, но, учитывая основную природу вопроса, я предположил, что OP использует оболочку bash по умолчанию.
evilsoup

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.