Question

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
Was it helpful?

Solution

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.

OTHER TIPS

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

 test_file.txt: ASCII text, with CRLF line terminators
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top