Проверка файлов 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