Pergunta

I want to check whether any DOS files exist in any specific directory. Is there any way to distinguish DOS files from UNIX apart from the ^M chars ?

I tried using file, but it gives the same output for both.

$ file test_file
test_file: ascii text

And after conversion:

$ unix2dos test_file test_file
$ file test_file.txt
test_file.txt: ascii text
Foi útil?

Solução

The CRLF (\r\n, ^M) line endings chars are the only difference between Unix and DOS/Windows ASCII files, so no, there's no other way.

What you might try if you have to fromdos command is to compare its output with the original file:

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

This fails (non-zero $?) if fromdos stripped any \r away.

dos2unix might be used in a similar way, but I don't know its exact syntax.

Outras dicas

If you actually put Windows newlines in, you'll see the following output from file:

 test_file.txt: ASCII text, with CRLF line terminators
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top