Auf gültige Dokumentdateien prüfen

1092
sweb

Ich brauche einen einfachen Weg, um zu überprüfen, ob meine Dateien gültige Dokumente sind (pdf, doc, docx, ppt, pptx, xls, xlsx, odt, ods, odp und etc).

Ich kann es nicht verwenden, fileweil es magicüberhaupt nicht gut funktioniert. Bei PDF-Dateien ist dies beispielsweise meine Ausgabe.

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 

Zum Beispiel verwende ich abiword- was ein gutes Werkzeug ist - aber jedes Format konvertiert. Es wird nicht nach gültigen Dokumenten gesucht:

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

Gibt es einen Befehl, um dann nach gültigen Dokumenten zu suchen?

2
Ausgezeichnete Frage. Ich möchte auch die Antwort darauf wissen. Julian Knight vor 12 Jahren 0
Entschuldigung, irgendwie war diese Formatierung durcheinander geraten. Hoffe es ist jetzt behoben! slhck vor 12 Jahren 0
@slhck ty für die Verbesserung sweb vor 12 Jahren 0

1 Antwort auf die Frage

2
RedGrittyBrick

Aktualisieren Sie Ihre /usr/share/file/magicDatei.

#------------------------------------------------------------------------------ # pdf: file(1) magic for Portable Document Format #  0 string %PDF- PDF document >5 byte x \b, version %c >7 byte x \b.%c 

Ich würde hexdump verwenden, um die ersten Bytes der PDFs zu betrachten, die nicht richtig erkannt werden.


Aktualisieren.

Wie Sie die Magic-Datei aktualisieren, hängt von Ihrem Betriebssystem und der Verteilung ab. Normalerweise verwenden Sie den Paketmanager. Zum Beispiel können Sie unter RedHat Linux und den nachfolgenden Downstream-Distributionen yum provides /usr/share/file/magicherausfinden, welches Paket diese Datei enthält, und dann 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! 

Wenn Sie möchten, können Sie die magicDatei stattdessen mithilfe eines Texteditors aktualisieren, nachdem Sie die Beispieldokumentdateien gelesen man magicund verwendet haben hexdump _C -n 20, um Signaturen für sich selbst zu ermitteln.

Wenn Sie dies tun, ist es möglicherweise ratsam, zuerst eine separate Magic-Datei zu erstellen und die Option files -m magicfilezum Testen zu verwenden.


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 

Möglicherweise können Sie auf eine File-Sharing-Website Dateien hochladen, die filenicht korrekt identifiziert werden können.

Wie kann ich es aktualisieren? Wo ist der Master-Zweig der Zauberdatei? sweb vor 12 Jahren 0
@sweb: siehe aktualisierte Antwort RedGrittyBrick vor 12 Jahren 0