Sprawdzanie poprawności plików dokumentów

2

Potrzebuję prostego sposobu, aby sprawdzić, czy moje pliki są prawidłowymi dokumentami (pdf, doc, docx, ppt, pptx, xls, xlsx, odt, ods, odp itp.).

Nie mogę użyć, fileponieważ w magicogóle nie działa dobrze. Na przykład w przypadku plików PDF jest to mój wynik.

sweb@sweb-laptop: /media/files/ebooks/PDF and CHM$ file --mime *. Pdf
PHP 5 for Dummies. Pdf: application/pdf; charset=binary
PHP 6 and MySQL 5 for Dynamic Web Sites. Pdf: application/octet-stream; charset=binary
PHP6 and MySQL Bible. Pdf: application/pdf; charset=binary
PHP6.pdf: application/octet-stream; charset=binary
PHP and MySQL for Dummies SE. Pdf: application/pdf; charset=binary

Na przykład używam abiword- co jest dobrym narzędziem - ale konwertuje dowolny format. Nie sprawdza poprawnych dokumentów:

abiword --to=txt --to-name=output.txt audio.mp3

Czy jest zatem dostępne polecenie, aby sprawdzić poprawność dokumentów?

sweb
źródło
Doskonałe pytanie. Chciałbym również znać odpowiedź na to pytanie.
Julian Knight
Niestety, jakoś to formatowanie zostało pomieszane. Mam nadzieję, że to już naprawione!
slhck
@slhck ty for Improv
sweb

Odpowiedzi:

2

Zaktualizować /usr/share/file/magicplik?

#------------------------------------------------------------------------------
# pdf:  file(1) magic for Portable Document Format
#

0 string    %PDF-   PDF document
>5  byte    x   \b, version %c
>7  byte    x   \b.%c

Używałbym zrzutu heksadecymalnego, aby sprawdzić kilka pierwszych bajtów plików PDF, które nie zostały poprawnie zidentyfikowane.


Aktualizacja.

Sposób aktualizacji magicznego pliku zależy od systemu operacyjnego i dystrybucji. Zazwyczaj używasz menedżera pakietów. Na przykład w RedHat Linux i późniejszych dystrybucjach możesz użyć, yum provides /usr/share/file/magicaby znaleźć pakiet zawierający ten plik, a następnie użyć sudo yum update <packagename>...

$ yum provides /usr/share/file/magic
...
file-4.17-15.el5_3.1.x86_64 : A utility for determining file types.
Repo        : installed
Matched from:
Other       : Provides-match: /usr/share/file/magic


$ sudo yum update file
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.mirroring.pulsant.co.uk
 * extras: centos.mirroring.pulsant.co.uk
 * rpmforge: nl.mirror.eurid.eu
 * updates: centos.mirroring.pulsant.co.uk
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package file.x86_64 0:4.17-21 set to be updated
rpmforge/filelists_db                                    | 5.9 MB     00:08
updates/filelists_db                                     | 1.9 MB     00:03
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package          Arch               Version             Repository        Size
================================================================================
Updating:
 file             x86_64             4.17-21             base             320 k

Transaction Summary
================================================================================
Install       0 Package(s)
Upgrade       1 Package(s)

Total download size: 320 k
Is this ok [y/N]: y
Downloading Packages:
file-4.17-21.x86_64.rpm                                  | 320 kB     00:02
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating       : file                                                     1/2
  Cleanup        : file                                                     2/2

Updated:
  file.x86_64 0:4.17-21

Complete!

Jeśli chcesz, możesz zamiast tego zaktualizować magicplik za pomocą edytora tekstu po przeczytaniu man magici użyciu hexdump _C -n 20przykładowych plików dokumentów do samodzielnego opracowania podpisów.

jeśli masz zamiar to zrobić, rozsądnie może być najpierw utworzyć osobny plik magii i przetestować go za pomocą opcji files -m magicfile.


PS

$ file --mime `locate *.pdf`
/usr/share/doc/bind-9.3.6/arm/Bv9ARM.pdf:                application/pdf
/usr/share/doc/libtheora-1.0alpha7/Theora_I_spec.pdf:    application/pdf
/usr/share/doc/prelink-0.4.0/prelink.pdf:                application/pdf
/usr/share/doc/samba-3.0.33/Samba3-ByExample.pdf:        application/pdf
/usr/share/doc/samba-3.0.33/Samba3-Developers-Guide.pdf: application/pdf
/usr/share/doc/samba-3.0.33/Samba3-HOWTO.pdf:            application/pdf
/usr/share/doc/speex-1.0.5/manual.pdf:                   application/pdf
/usr/share/ghostscript/8.70/examples/annots.pdf:         application/pdf
/usr/share/gimp-print/doc/users-guide.pdf:               application/pdf

Być może możesz przesłać do witryny udostępniania plików niektóre pliki, które filenie są poprawnie zidentyfikowane.

RedGrittyBrick
źródło
jak mogę to zaktualizować? gdzie jest główny oddział pliku magii?
sweb
@sweb: patrz zaktualizowana odpowiedź
RedGrittyBrick