Frage

Ich möchte überprüfen, ob DOS-Dateien in einem bestimmten Verzeichnis vorhanden sind. Gibt es eine Möglichkeit DOS-Dateien von UNIX zu unterscheiden abgesehen von den ^ M Zeichen?

Ich habe versucht, Datei, aber es gibt die gleiche Leistung für beide.

$ file test_file
test_file: ascii text

Und nach der Umwandlung:

$ unix2dos test_file test_file
$ file test_file.txt
test_file.txt: ascii text
War es hilfreich?

Lösung

Die CRLF (\r\n, ^M) Zeilenende Zeichen sind der einzige Unterschied zwischen Unix und DOS / Windows ASCII-Dateien, also nein, es gibt keinen anderen Weg.

Was Sie könnten versuchen, wenn Sie müssen fromdos Befehl ist seine Ausgabe mit der Originaldatei vergleichen:

file=test_file
fromdos < $file | cmp $file -

Dies scheitert (nicht Null $?), wenn fromdos entfernt jeden \r gestrippt.

dos2unix könnte in ähnlicher Weise verwendet werden, aber ich weiß nicht, seine genaue Syntax.

Andere Tipps

Wenn Sie tatsächlich Windows-Zeilenumbrüche setzen in, werden Sie die folgende Ausgabe von file sehen:

 test_file.txt: ASCII text, with CRLF line terminators
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top