Domanda

voglio controllare se esistono file DOS in una directory specifica. C'è un modo per distinguere i file DOS da UNIX a parte i ^ M caratteri?

Ho provato ad utilizzare il file, ma dà la stessa uscita per entrambi.

$ file test_file
test_file: ascii text

E dopo la conversione:

$ unix2dos test_file test_file
$ file test_file.txt
test_file.txt: ascii text
È stato utile?

Soluzione

Il CRLF (\r\n, ^M) fine riga caratteri sono l'unica differenza tra i file ASCII di Unix e DOS / Windows, quindi no, non c'è altro modo.

Che cosa si potrebbe provare se devi fromdos comando è quello di confrontare il suo output con il file originale:

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

Questa fallisce (non-zero $?) se fromdos spogliato qualsiasi \r via.

dos2unix potrebbe essere utilizzato in modo simile, ma non so la sua sintassi esatta.

Altri suggerimenti

Se effettivamente messo a capo di Windows in, vedrete il seguente output da file:

 test_file.txt: ASCII text, with CRLF line terminators
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top