Überprüfen auf DOS-Dateien auf UNIX
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
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