Como identificar arquivos sem ext no nome, mas que possuem extensão em sua propriedade, por exemplo: nav.example.file que na verdade é um documento de texto

Como identificar arquivos sem ext no nome, mas que possuem extensão em sua propriedade, por exemplo: nav.example.file que na verdade é um documento de texto

find -maxdepth 1 ! -name "*.*" -print

Isso não identifica nomes de arquivos como INSSO.TEST.20100503.16400006, que é um documento xml

Responder1

Se você quiser encontrar arquivos com base no que eles contêm - e não em seus nomes - você precisará procurá-los. encontrarnão fará isso sozinho, mas você pode dizer que ele executará outro programa que o fará.

eu começaria comarquivo(1), que imprimirá alguma descrição do arquivo. Se for útil para seus arquivos XML, eu escreveria um script que imprimisse o nome do arquivo seencontrardiz que é o tipo certo. Em seguida, invoque esse script para todos os arquivos elegíveis com:

find . -type f -exec my-xml-detector {} \;

Responder2

Se você deseja encontrar arquivos no diretório atual que não possuem extensão ou uma extensão com mais de 3 caracteres ou uma extensão vazia, você pode fazer:

find . ! -name . -prune ! -name '?*.[!.]' \
                        ! -name '?*.[!.][!.]' \
                        ! -name '?*.[!.][!.][!.]'

(isso pressupõe que nenhum nome de arquivo contenha sequências de bytes que não formem caracteres válidos).

informação relacionada