Você pode usar o utilitário file
para tentar classificar um arquivo com base em uma sequência de testes do sistema de arquivos, testes mágicos e testes de linguagem - por exemplo
$ file pynauty-0.5.tar
pynauty-0.5.tar: POSIX tar archive (GNU)
$ file opencv-2.4.10.zip
opencv-2.4.10.zip: Zip archive data, at least v1.0 to extract
Quando executado em arquivos compactados, o padrão é apenas informar que ele contém "dados compactados", mas você pode alterar esse comportamento usando a -z
switch
-z, --uncompress
Try to look inside compressed files.
ou seja,
$ file -b octave-4.0.0.tar.gz
gzip compressed data, from Unix, last modified: Tue May 26 12:35:47 2015, max compression
enquanto
$ file -zb octave-4.0.0.tar.gz
POSIX tar archive (gzip compressed data, from Unix, last modified: Tue May 26 12:35:47 2015, max compression)
Com base nisso, você pode tentar executar file -zb
dentro de um comando find
e grep
ing para a palavra " archive
": algo como
find . -type f -exec sh -c 'file -zb "" | grep -q "archive"' _ {} \; -print
A opção -b
impede correspondências falsas no nome do arquivo.