Utiliser la commande 'file' de linux pour déterminer le type (i.e. image, audio ou vidéo)

Le mot file se réfère ici au shell le fichier commande, et pas des fichiers réels. Je veux déterminer si un fichier est un, par exemple, le fichier vidéo (.mpg, .mkv,.avi). file est très bon à retourner image pour les fichiers image, video pour les fichiers vidéo, et audio pour les fichiers audio (et application/x-empty pour une raison pour le texte). Ma question Est de savoir dans quelle mesure cela est fiable pour identifier les types. Si je fait un simple

file -ib deliverance.avi | grep video

ça marche pour tous main fichiers vidéo décrites ici<!--12?

10
demandé sur puk 2011-11-12 05:28:11

3 réponses

Les résultats de file sont moins que parfait, et il a plus de problèmes avec certains types de fichiers que d'autres. Fichier cherche simplement des morceaux particuliers de données binaires dans des modèles prévisibles pour comprendre les types de fichiers.

.mp4 et .mkv ont généralement plusieurs types de MIME différents qui devraient correctement dépendre de ce type de données est contenue. Par exemple, un .mp4 pourrait être correctement identifié comme video/mp4,audio/mp4, ou application/mp4 selon le contenu.

Dans la pratique, file fait souvent des suppositions qui se conforment simplement à l'usage courant, et il peut fonctionner parfaitement pour vous. Par exemple, bien que j'aie mentionné certaines difficultés théoriques à identifier correctement les fichiers Matroska,file fondamentalement suppose juste que n'importe quel dossier Matroska est une vidéo. D'autre part, l'utilisation de la OGG container est plus également divisé entre l'audio et la vidéo, et je crois que la version actuelle de file divise simplement la différence, et identifie les fichiers Ogg comme application/ogg, qui n'entrerait dans aucune de vos catégories.

la seule chose que je peux dire avec certitude est que vous voulez la version la plus à jour de file vous pouvez mettre la main dessus. Les fichiers "magiques" qui contiennent les motifs à comparer et les types MIME qui résulteront d'une correspondance sont mis à jour de façon équitable. souvent pour inclure de nouveaux types de fichiers comme WebM, ou tout simplement pour améliorer la précision pour les types plus anciens.

9
répondu John Flatness 2011-11-12 02:00:13

file fonctionne en référençant l'en-tête du fichier par rapport à un fichier "magic number". Je soupçonne que la meilleure façon de voir comment le fichier robuste est de vérifier votre fichier magic numéro local (éventuellement /usr/share/magic mais voir le fichier man pour les détails) pour les types de fichiers de votre liste référencée.

1
répondu frankc 2011-11-12 01:53:21

il semble que cela devrait fonctionner pour la plupart des fichiers vidéo/audio/image. Mais, si ce n'est pas le cas, il y a en fait un fichier qui contient les relations entre une extension et son type:

l'information identifiant ces fichiers est lue à partir du fichier magic compilé /usr/share/magic.mgc, ou /usr/share / magic si le fichier de compilation n'existe pas.

voir: http://linux.about.com/library/cmd/blcmdl1_file.htm

espérons que ceci aide!

1
répondu Shalmezad 2013-12-16 15:21:40