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!