Come determinare il tipo di file in Linux?
Domanda
Se qualcuno mi invia un documento (.pdf, .doc, .xls, ppt, .ogg, mp3, png, ecc.) senza estensione, come posso determinare il tipo di file? Il comando / usr / bin / file non sempre indovina o dice semplicemente che ho un documento di Microsoft Office. Vorrei sapere esattamente in modo da poter aggiungere l'estensione al nome del file.
Soluzione
Puoi inventare le tue regole aggiungendole a / etc / magic
file man per maggiori dettagli. È difficile ottenere sempre questi corretti, tuttavia ho avuto un successo ragionevole.
Altri suggerimenti
Prova il mimetype (1).
Per Perl, guarda File :: MimeInfo .
Alcuni degli altri poster finora sembrano trascurare alcune cose.
File :: MimeInfo utilizza lo stesso database MimeInfo utilizzato da 'file' per identificare i file. Quindi è improbabile che faccia qualcosa di diverso.
File :: Type è probabilmente interessante, dato che si basa solo su se stesso, ma questo porta a un comico script lungo pieno di dichiarazioni "if". Ma questo, per sua stessa natura, è improbabile che riguardi cose che "file" già non coprono.
Il meglio che puoi fare con tipi di file sconosciuti è provare a aprirli con un editor esadecimale, oppure farli scorrere attraverso 'stringhe' e vedere se riconosci qualcosa. Se riesci a identificare un file, potresti scegliere File :: Type come tuo soluzione perché, per quanto ne so, è almeno facile da estendere.
Puoi usare il modulo Perl: File :: Type