Controllo per i file DOS su UNIX
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
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