Проверка файлов DOS в UNIX

Я хочу проверить, существуют ли какие-либо файлы DOS в каком-либо определенном каталоге. Есть ли способ отличить файлы DOS от UNIX, кроме символов ^M?

Я попытался использовать файл, но он дает одинаковый вывод для обоих.

$ file test_file
test_file: ascii text

И после преобразования:

$ unix2dos test_file test_file
$ file test_file.txt
test_file.txt: ascii text

2 ответа

Решение

CRLF (\r\n, ^M) символы конца строки - единственное различие между файлами ASCII в Unix и DOS / Windows, так что другого пути нет.

Что вы можете попробовать, если придется fromdos Команда сравнивает его вывод с исходным файлом:

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

Это не удается (ненулевой $?) если fromdos раздели любого \r далеко.

dos2unix может быть использован аналогичным образом, но я не знаю его точный синтаксис.

Если вы на самом деле вставляете символы новой строки в Windows, вы увидите следующий вывод file:

 test_file.txt: ASCII text, with CRLF line terminators
Другие вопросы по тегам