GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was könnte dazu führen, dass der Dateibefehl in Linux eine Textdatei als Binärdaten meldet?

Vim bemüht sich sehr, alles, was Sie darauf werfen, zu verstehen, ohne sich zu beschweren. Dies macht es zu einem relativ schlechten Werkzeug zur Diagnose von file Ausgabe von .

Vims „[converted]“-Hinweis weist darauf hin, dass etwas in der Datei war, das vim in der von Ihren Gebietsschema-Einstellungen (LANG usw.) vorgeschlagenen Textkodierung nicht erwarten würde.

Andere haben bereits vorgeschlagen

  • cat -v
  • xxd

Sie können versuchen, nach Nicht-ASCII-Zeichen zu suchen.

  • grep -P '[\x7f-\xff]' filename

Die andere Möglichkeit sind nicht standardmäßige Zeilenenden für die Plattform (z. B. CRLF oder CR), aber ich würde file erwarten um damit fertig zu werden und "DOS-Textdatei" oder ähnliches zu melden.


Wenn Sie file -D filename ausführen , file zeigt Debugging-Informationen an, einschließlich der durchgeführten Tests. Gegen Ende wird angezeigt, welcher Test bei der Bestimmung des Dateityps erfolgreich war.

Für eine normale Textdatei sieht es so aus:

[31> 0 regex,=^package[ \t]+[0-9A-Za-z_:]+ *;,""]
1 == 0 = 0
ascmagic 1
filename.txt: ISO-8859 text, with CRLF line terminators

Dies wird Ihnen sagen, was es gefunden hat, um zu bestimmen, dass es sich um diesen Mime-Typ handelt.


Ich habe das Problem mit der binären Suche gefunden, um die problematischen Zeilen zu finden.

head -n {1/2 line count} file.cpp > a.txt
tail -n {1/2 line count} file.cpp > b.txt

Ausführen von file gegen jede Hälfte und die Wiederholung des Vorgangs half mir, die störende Linie zu finden. Ich habe ein Control gefunden +P (^P ) darin eingebettetes Zeichen. Das Entfernen löste das Problem. Ich werde mir ein Perl-Skript schreiben, um in Zukunft nach diesen (und anderen erweiterten) Zeichen zu suchen.

Ein großes Dankeschön an alle, die auf all die Tipps geantwortet haben!


Linux
  1. Wesentliche Beispiele für den Dateibefehl in Linux

  2. 9 Nützliche Beispiele für den Split-Befehl in Linux

  3. Was ist das Äquivalent zum Linux-Dateibefehl für Windows?

  4. Wozu dient Linux test -a command test?

  5. Wie lautet der Befehl zum Kopieren, Lesen und Entfernen von Dateien unter Linux

Was ist der Linux-Überwachungsbefehl + Beispiele

Zeigen Sie den Inhalt einer Datei in der Linux-Befehlszeile an

So fügen Sie Text am Anfang einer Datei in Linux hinzu

Was ist der Kill-Befehl in Linux?

3 Möglichkeiten zum schnellen Erstellen einer Textdatei über das Linux-Terminal

was ist der zuverlässigste befehl, um die tatsächliche größe einer datei zu finden linux