
find -maxdepth 1 ! -name "*.*" -print
Это не идентифицирует имена файлов, такие как INSSO.TEST.20100503.16400006, которые являются XML-документом.
решение1
Если вы хотите найти файлы по их содержимому, а не по названию, вам придется заглянуть в них. находитьСамо по себе оно этого не сделает, но вы можете заставить его выполнить другую программу, которая это сделает.
Я бы начал сфайл(1), который выведет некоторое описание файла. Если это полезно для ваших XML-файлов, я бы написал скрипт, который выведет имя файла, еслинаходитьговорит, что это правильный тип. Затем вызовите этот скрипт для всех подходящих файлов с помощью:
find . -type f -exec my-xml-detector {} \;
решение2
Если вы хотите найти в текущем каталоге файлы, не имеющие расширения или имеющие расширение, длина которого превышает 3 символа, или пустое расширение, вы можете сделать следующее:
find . ! -name . -prune ! -name '?*.[!.]' \
! -name '?*.[!.][!.]' \
! -name '?*.[!.][!.][!.]'
(предполагается, что ни одно имя файла не содержит последовательностей байтов, которые не образуют допустимые символы).