найти файлы без расширения

43

Скажем, у меня есть:

foo.txt
bar
baz.ooo

Если я буду использовать ls -1 !(*.*)то получу только barна выходе. Отлично, теперь я хочу получить те же результаты с find - некоторые find -regex, которые сделают эту работу.

НОТА:

find -name !(*.*)это не ответ, так как !(*.*)это все еще шар Бэша, который я НЕ могу использовать.

pawel7318
источник

Ответы:

64

Вы могли бы использовать: нивелирует следующее выражение, здесь имя файла , который содержит «»find . -type f ! -name "*.*"!

Вы также можете использовать -maxdepthопцию, чтобы уменьшить глубину поиска.

fduff
источник
1
Мне нравится ваш ответ больше всего, поскольку у меня есть некоторые другие ограничения для имен файлов, а ваш - пуленепробиваемый.
pawel7318
Это также здорово, когда ls -1 !(*.*)не работает, потому что !дает «Событие не найдено».
Ноумен
2
@ Нумен, set +Hчтобы решить эту проблему
pawel7318
1
Если вы рассматриваете .gitignoreкак файл без расширения (например, путь к узлу path.extname ()), используйте ! -name "?*.*"вместо! -name "*.*"
Джонни Вонг