dos2unix(1)

๐Ÿ’… dos2unix(1) โ€” the manual page, but make it make sense ๐ŸŽ€

okay bestie, so this is the manual for dos2unix(1) โ€” dated 2026-08-27 if you're keeping receipts โ€” and it's literally your whole guide to not having your text files be a mess. sit down, grab a strawberry drink ๐Ÿ“, we're doing this.


โœจ NAME โœจ

dos2unix โ€” the DOS/Mac to Unix and vice versa text file format converter. it converts. it goes both ways. it slays. ๐Ÿ’…


๐ŸŒธ SYNOPSIS ๐ŸŒธ

dos2unix [options] [FILE ...] [-n INFILE OUTFILE ...]
unix2dos [options] [FILE ...] [-n INFILE OUTFILE ...]

like, that's the whole vibe. two commands, same energy, opposite directions. ๐Ÿฆ‹


๐Ÿ’– DESCRIPTION ๐Ÿ’–

The dos2unix package ships two utilities: dos2unix and unix2dos. Their whole job is converting plain text files from DOS format or Mac format to Unix format, and vice versa. that's it. that's the gig. ๐Ÿ‘‘

So here's the tea on line breaks (aka newlines) โ˜•:

  • In DOS/Windows text files, a line break is a combination of two characters: a Carriage Return (CR) followed by a Line Feed (LF). two characters doing one job, highkey extra.
  • In Unix text files, a line break is a single character: the Line Feed (LF). minimal. efficient. iconic.
  • In Mac text files, prior to Mac OS X, a line break was a single Carriage Return (CR) character. Nowadays Mac OS uses Unix style (LF) line breaks. she grew up. ๐ŸŒฑ

Besides line breaks, dos2unix can also convert the encoding of files. A few DOS code pages can be converted to Unix Latin-1. And Windows Unicode (UTF-16) files can be converted to Unix Unicode (UTF-8) files. multi-talented, no cap. โœจ

Binary files are automatically skipped, unless conversion is forced. ๐Ÿ™ˆ

Non-regular files, such as directories and FIFOs, are automatically skipped too. not today, directory. ๐Ÿ’€

Symbolic links and their targets are by default kept untouched. Symbolic links can optionally be replaced, or the output can be written to the symbolic link target. Writing to a symbolic link target is not supported on Windows. noted, bestie. ๐Ÿซถ

dos2unix was modelled after dos2unix under SunOS/Solaris. But there's one important difference with the original SunOS/Solaris version: this version does by default in-place conversion (old file mode), while the original SunOS/Solaris version only supports paired conversion (new file mode). See also options -o and -n. Another difference is that the SunOS/Solaris version uses by default iso mode conversion while this version uses by default ascii mode conversion. so like, they're cousins, not twins. ๐ŸŒˆ


๐Ÿ”ฅ OPTIONS ๐Ÿ”ฅ

okay this is the long part, but every single one matters, so let's go. ๐Ÿงš

  • -- โ€” Treat all following options as file names. Use this option if you want to convert files whose names start with a dash. For instance to convert a file named -foo, you can use this command:
dos2unix -- -foo

Or in new file mode:

dos2unix -n -- -foo out.txt
  • --allow-chown โ€” Allow file ownership change in old file mode.

When this option is used, the conversion will not be aborted when the user and/or group ownership of the original file can't be preserved in old file mode. Conversion will continue and the converted file will get the same new ownership as if it was converted in new file mode. See also options -o and -n. This option is only available if dos2unix has support for preserving the user and group ownership of files. ๐Ÿซถ

  • -ascii โ€” Default conversion mode. See also section CONVERSION MODES. (yes, that's the default, no you don't have to do anything.)
  • -iso โ€” Conversion between DOS and ISO-8859-1 character set. See also section CONVERSION MODES.
  • -1252 โ€” Use Windows code page 1252 (Western European). ๐Ÿ‡ช๐Ÿ‡บ
  • -437 โ€” Use DOS code page 437 (US). This is the default code page used for ISO conversion. โญ
  • -850 โ€” Use DOS code page 850 (Western European).
  • -860 โ€” Use DOS code page 860 (Portuguese).
  • -863 โ€” Use DOS code page 863 (French Canadian). ๐Ÿ‡จ๐Ÿ‡ฆ
  • -865 โ€” Use DOS code page 865 (Nordic). โ„๏ธ
  • -7 โ€” Convert 8 bit characters to 7 bit space. downgrade era, honestly.
  • -b, --keep-bom โ€” Keep Byte Order Mark (BOM). When the input file has a BOM, write a BOM in the output file. This is the default behavior when converting to DOS line breaks. See also option -r.
  • -c, --convmode CONVMODE โ€” Set conversion mode. Where CONVMODE is one of: ascii, 7bit, iso, mac with ascii being the default. pick your fighter. ๐ŸฅŠ
  • -D, --display-enc ENCODING โ€” Set encoding of displayed text. Where ENCODING is one of: ansi, unicode, unicodebom, utf8, utf8bom with ansi being the default.

This option is only available in dos2unix for Windows with Unicode file name support. This option has no effect on the actual file names read and written, only on how they are displayed. so it's purely a looks thing, and honestly same. ๐Ÿ’…

There are several methods for displaying text in a Windows console based on the encoding of the text. They all have their own advantages and disadvantages. deep breaths, we're going through all of them:

ansi ๐ŸŽ€

dos2unix's default method is to use ANSI encoded text. The advantage is that it is backwards compatible. It works with raster and TrueType fonts. In some regions you may need to change the active DOS OEM code page to the Windows system ANSI code page using the chcp command, because dos2unix uses the Windows system code page.

The disadvantage of ansi is that international file names with characters not inside the system default code page are not displayed properly. You will see a question mark, or a wrong symbol instead. When you don't work with foreign file names this method is OK. ๐Ÿ™ˆ

unicode, unicodebom ๐ŸŒˆ

The advantage of unicode (the Windows name for UTF-16) encoding is that text is usually properly displayed. There is no need to change the active code page. You may need to set the console's font to a TrueType font to have international characters displayed properly. When a character is not included in the TrueType font you usually see a small square, sometimes with a question mark in it. ๐ŸŸช

When you use the ConEmu console all text is displayed properly, because ConEmu automatically selects a good font. main character console energy.

The disadvantage of unicode is that it is not compatible with ASCII. The output is not easy to handle when you redirect it to another program. ๐Ÿ˜ญ

When method unicodebom is used the Unicode text will be preceded with a BOM (Byte Order Mark). A BOM is required for correct redirection or piping in PowerShell.

utf8, utf8bom ๐Ÿฆ‹

The advantage of utf8 is that it is compatible with ASCII. You need to set the console's font to a TrueType font. With a TrueType font the text is displayed similar as with the unicode encoding.

The disadvantage is that when you use the default raster font all non-ASCII characters are displayed wrong. Not only unicode file names, but also translated messages become unreadable. On Windows configured for an East-Asian region you may see a lot of flickering of the console when the messages are displayed. flickering?? in this economy?? ๐Ÿ’€

In a ConEmu console the utf8 encoding method works well. ๐Ÿ‘‘

When method utf8bom is used the UTF-8 text will be preceded with a BOM (Byte Order Mark). A BOM is required for correct redirection or piping in PowerShell.

The default encoding can be changed with environment variable DOS2UNIX_DISPLAY_ENC by setting it to unicode, unicodebom, utf8, or utf8bom. ๐Ÿซถ

  • -e, --add-eol โ€” Add a line break to the last line if there isn't one. This works for every conversion. โœจ

A file converted from DOS to Unix format may lack a line break on the last line. There are text editors that write text files without a line break on the last line. Some Unix programs have problems processing these files, because the POSIX standard defines that every line in a text file must end with a terminating newline character. For instance concatenating files may not give the expected result. so like, give your last line its little send-off, it's only polite. ๐ŸŽ€

  • --error-binary โ€” Return an error if a binary file is skipped. not a vibe warning, an actual error.
  • -f, --force โ€” Force conversion of binary files. โš ๏ธ you asked for it.
  • -gb, --gb18030 โ€” On Windows UTF-16 files are by default converted to UTF-8, regardless of the locale setting. Use this option to convert UTF-16 files to GB18030. This option is only available on Windows. See also section GB18030.
  • -h, --help โ€” Display help and exit. the classic. ๐Ÿซถ
  • -i[FLAGS], --info[=FLAGS] FILE ... โ€” Display file information. No conversion is done. just looking, not touching. ๐Ÿ‘€

The following information is printed, in this order: number of DOS line breaks, number of Unix line breaks, number of Mac line breaks, byte order mark, text or binary, file name.

Example output:

     6       0       0  no_bom    text    dos.txt
     0       6       0  no_bom    text    unix.txt
     0       0       6  no_bom    text    mac.txt
     6       6       6  no_bom    text    mixed.txt
    50       0       0  UTF-16LE  text    utf16le.txt
     0      50       0  no_bom    text    utf8unix.txt
    50       0       0  UTF-8     text    utf8dos.txt
     2     418     219  no_bom    binary  dos2unix.exe

Note that sometimes a binary file can be mistaken for a text file. See also option -s. rude of it, honestly. ๐Ÿ™ˆ

If in addition option -e or --add-eol is used also the type of the line break of the last line is printed, or noeol if there is none.

Example output:

     6       0       0  no_bom    text   dos     dos.txt
     0       6       0  no_bom    text   unix    unix.txt
     0       0       6  no_bom    text   mac     mac.txt
     1       0       0  no_bom    text   noeol   noeol_dos.txt

Optionally extra flags can be set to change the output. One or more flags can be added. here they all are, bestie:

  • 0 โ€” Print the file information lines followed by a null character instead of a newline character. This enables correct interpretation of file names with spaces or quotes when flag c is used. Use this flag in combination with xargs(1) option -0 or --null. ๐ŸŽ€
  • d โ€” Print number of DOS line breaks.
  • u โ€” Print number of Unix line breaks.
  • m โ€” Print number of Mac line breaks.
  • b โ€” Print the byte order mark.
  • t โ€” Print if file is text or binary.
  • e โ€” Print the type of the line break of the last line, or noeol if there is none.
  • c โ€” Print only the files that would be converted.

With the c flag dos2unix will print only the files that contain DOS line breaks, unix2dos will print only file names that have Unix line breaks.

If in addition option -e or --add-eol is used also the files that lack a line break on the last line will be printed. โญ

  • h โ€” Print a header.
  • p โ€” Show file names without path.

Examples โ€” yes, real ones, copy away:

Show information for all *.txt files:

dos2unix -i *.txt

Show only the number of DOS line breaks and Unix line breaks:

dos2unix -idu *.txt

Show only the byte order mark:

dos2unix --info=b *.txt

List the files that have DOS line breaks:

dos2unix -ic *.txt

List the files that have Unix line breaks:

unix2dos -ic *.txt

and that's where part 1 wraps up โ€” more coming, don't go anywhere. ๐Ÿฆ‹

List the files that have DOS line breaks or lack a line break on the last line:

dos2unix -e -ic *.txt

Convert only files that have DOS line breaks and leave the other files untouched:

dos2unix -ic0 *.txt | xargs -0 dos2unix

Find text files that have DOS line breaks:

find -name '*.txt' -print0 | xargs -0 dos2unix -ic
  • -k, --keepdate โ€” keeps the date stamp of the output file the same as the input file's. no timestamp glow-ups ๐Ÿ’…
  • -L, --license โ€” shows the program's license. give credit where credit is due, bestie ๐ŸŽ€
  • -l, --newline โ€” adds an additional newline. ok so the deets: for dos2unix, only DOS line breaks get turned into two Unix line breaks, and in Mac mode only Mac line breaks get turned into two Unix line breaks. For unix2dos, only Unix line breaks get turned into two DOS line breaks, and in Mac mode Unix line breaks get turned into two Mac line breaks. double it and give it to the next line โœจ
  • -m, --add-bom โ€” writes a Byte Order Mark (BOM) into the output file. by default an UTF-8 BOM is what gets written. when the input file is UTF-16 and you're using the -u option, an UTF-16 BOM will be written instead. and listen โ€” never use this option when the output encoding is anything other than UTF-8, UTF-16, or GB18030. see the UNICODE section too. ๐Ÿซถ
  • -n, --newfile INFILE OUTFILE ... โ€” New file mode! converts file INFILE and writes the output to file OUTFILE. filenames must be given in pairs, and do not use wildcard names here or you will literally lose your files ๐Ÿ˜ญ. the person who starts the conversion in new file (paired) mode becomes the owner of the converted file. the read/write permissions of the new file will be the permissions of the original file minus the umask(1) of whoever runs the conversion.
  • --no-allow-chown โ€” doesn't allow file ownership change in old file mode (that's the default, btw). it aborts the conversion when the user and/or group ownership of the original file can't be preserved in old file mode. see also options -o and -n. heads up: this option is only available if dos2unix has support for preserving the user and group ownership of files. ๐Ÿงš
  • --no-add-eol โ€” do not add a line break to the last line if there isn't one (default). leave that last line exactly how you found it.
  • --no-error-binary โ€” do not return an error if a binary file is skipped (default). no drama, no error code ๐Ÿ’€
  • -O, --to-stdout โ€” writes to standard output, like a Unix filter. use option -o to go back to old file (in-place) mode. combined with option -e, files can be properly concatenated โ€” no merged last and first lines, and no Unicode byte order marks in the middle of the concatenated file. iconic. example:
dos2unix -e -O file1.txt file2.txt > output.txt
  • -o, --oldfile FILE ... โ€” Old file mode. converts file FILE and overwrites the output to it. the program defaults to running in this mode. wildcard names may be used ๐ŸŽ‰

in old file (in-place) mode the converted file gets the same owner, group, and read/write permissions as the original file. also when the file is converted by another user who has write permissions on the file (e.g. user root). the conversion will be aborted when it's not possible to preserve the original values. change of owner could mean the original owner isn't able to read the file anymore. change of group could be a security risk โ€” the file could be made readable for people it was never intended for. preservation of owner, group, and read/write permissions is only supported on Unix.

to check if dos2unix has support for preserving the user and group ownership of files, type dos2unix -V.

conversion is always done via a temporary file. when an error occurs halfway through the conversion, the temporary file is deleted and the original file stays intact. when the conversion is successful, the original file is replaced with the temporary file. here's the catch: you may have write permission on the original file, but no permission to put the same user and/or group ownership properties on the temporary file as the original file has. that means you're not able to preserve the user and/or group ownership of the original file. in that case you can use option --allow-chown to continue with the conversion:

dos2unix --allow-chown foo.txt

another option is to use new file mode:

dos2unix -n foo.txt foo.txt

the advantage of the --allow-chown option is that you can use wildcards, and the ownership properties will be preserved when possible. ๐Ÿซก

  • -q, --quiet โ€” Quiet mode. suppresses all warnings and messages. the return value is zero โ€” except when wrong command-line options are used. ๐Ÿคซ
  • -r, --remove-bom โ€” removes the Byte Order Mark (BOM). do not write a BOM in the output file. this is the default behavior when converting to Unix line breaks. see also option -b.
  • -s, --safe โ€” skips binary files (default). the skipping of binary files is done to avoid accidental mistakes. but be aware, bestie: the detection of binary files is not 100% foolproof ๐Ÿ™ˆ. input files are scanned for binary symbols which are typically not found in text files. it's possible that a binary file contains only normal text characters โ€” such a binary file will mistakenly be seen as a text file. by default, no error is returned when a binary file is skipped. when the --error-binary option is used, an error is returned.
  • -u, --keep-utf16 โ€” keeps the original UTF-16 encoding of the input file. the output file will be written in the same UTF-16 encoding โ€” little- or big-endian โ€” as the input file. this prevents transformation to UTF-8. an UTF-16 BOM will be written accordingly. this option can be disabled with the -ascii option.
  • -ul, --assume-utf16le โ€” assumes that the input file format is UTF-16LE. when there's a Byte Order Mark in the input file, the BOM has priority over this option. โš ๏ธ when you made a wrong assumption (the input file was not in UTF-16LE format) and the conversion succeeded, you'll get an UTF-8 output file with wrong text. you can undo the wrong conversion with iconv(1) by converting the UTF-8 output file back to UTF-16LE โ€” this will bring back the original file. the assumption of UTF-16LE works as a conversion mode: by switching to the default ascii mode the UTF-16LE assumption is turned off.
  • -ub, --assume-utf16be โ€” assumes that the input file format is UTF-16BE. works exactly the same as option -ul. ๐Ÿ’œ
  • -v, --verbose โ€” verbose messages! extra info is displayed about Byte Order Marks and the amount of converted line breaks. she's chatty and we love that ๐Ÿ”ฅ
  • -F, --follow-symlink โ€” follows symbolic links and converts the targets.
  • -R, --replace-symlink โ€” replaces symbolic links with converted files (the original target files remain unchanged).
  • -S, --skip-symlink โ€” keeps symbolic links and targets unchanged (default).
  • -V, --version โ€” displays version information and exits. short and sweet ๐Ÿ‘‘

๐ŸŽ MAC MODE

okay so by default, line breaks are converted from DOS to Unix and vice versa, and Mac line breaks are not converted.

in Mac mode, line breaks are converted from Mac to Unix and vice versa, and DOS line breaks are not changed.

to run in Mac mode, use the command-line option -c mac, or use the commands mac2unix or unix2mac. slay ๐ŸŒธ


๐ŸŒˆ CONVERSION MODES

โœจ ascii

this is the default conversion mode. it's for converting ASCII and ASCII-compatible encoded files, like UTF-8. enabling ascii mode disables 7bit and iso mode.

if dos2unix has UTF-16 support, UTF-16 encoded files are converted to the current locale character encoding on POSIX systems and to UTF-8 on Windows. enabling ascii mode disables the option to keep UTF-16 encoding (-u) and the options to assume UTF-16 input (-ul and -ub). to see if dos2unix has UTF-16 support, type dos2unix -V. see also section UNICODE. ๐Ÿ’–

๐ŸŽ€ 7bit

in this mode all 8 bit non-ASCII characters (with values from 128 to 255) are converted to a 7 bit space. bye bye high bits ๐Ÿ‘‹

๐Ÿ’… iso

characters are converted between a DOS character set (code page) and ISO character set ISO-8859-1 (Latin-1) on Unix. DOS characters without an ISO-8859-1 equivalent โ€” the ones where conversion isn't possible โ€” are converted to a dot. same goes for ISO-8859-1 characters without a DOS counterpart. ๐Ÿ”ต

when only option -iso is used, dos2unix will try to determine the active code page. when that's not possible, dos2unix will use default code page CP437, which is mainly used in the USA. to force a specific code page, use options -437 (US), -850 (Western European), -860 (Portuguese), -863 (French Canadian), or -865 (Nordic). Windows code page CP1252 (Western European) is also supported with option -1252. for other code pages, use dos2unix in combination with iconv(1) โ€” iconv can convert between a long list of character encodings.

๐Ÿšจ Never use ISO conversion on Unicode text files. It will corrupt UTF-8 encoded files. like, actually do not. ๐Ÿ’€

some examples, because we love a demo:

convert from DOS default code page to Unix Latin-1:

dos2unix -iso -n in.txt out.txt

convert from DOS CP850 to Unix Latin-1:

dos2unix -850 -n in.txt out.txt

convert from Windows CP1252 to Unix Latin-1:

dos2unix -1252 -n in.txt out.txt

convert from Windows CP1252 to Unix UTF-8 (Unicode):

iconv -f CP1252 -t UTF-8 in.txt | dos2unix > out.txt

convert from Unix Latin-1 to DOS default code page:

unix2dos -iso -n in.txt out.txt

convert from Unix Latin-1 to DOS CP850:

unix2dos -850 -n in.txt out.txt

convert from Unix Latin-1 to Windows CP1252:

unix2dos -1252 -n in.txt out.txt

convert from Unix UTF-8 (Unicode) to Windows CP1252:

unix2dos < in.txt | iconv -f UTF-8 -t CP1252 > out.txt

see also https://czyborra.com/charsets/codepages.html and https://czyborra.com/charsets/iso8859.html. ๐Ÿฆ‹

โœจ UNICODE โœจ

Okay bestie, this is the part where things get international ๐ŸŒโœจ

๐ŸŽ€ Encodings

So there are literally different Unicode encodings, right? On Unix and Linux, Unicode files are typically encoded in UTF-8 encoding. On Windows, Unicode text files can be encoded in UTF-8, UTF-16, or UTF-16 big-endian โ€” but mostly they're encoded in UTF-16 format. The way Windows is just doing its own thing, classic ๐Ÿ™ˆ

๐Ÿ’… Conversion

Unicode text files can have DOS, Unix or Mac line breaks, just like ASCII text files. No cap.

All versions of dos2unix and unix2dos can convert UTF-8 encoded files, because UTF-8 was designed for backward compatibility with ASCII. Iconic design choice honestly ๐Ÿ‘‘

dos2unix and unix2dos with Unicode UTF-16 support can read little- and big-endian UTF-16 encoded text files. Wanna check if your dos2unix was built with UTF-16 support? Just type dos2unix -V. That's it. That's the check.

On Unix/Linux, UTF-16 encoded files are converted to the locale character encoding. Use the locale(1) command to find out what the locale character encoding is. When conversion is not possible a conversion error will occur and the file will be skipped. ๐Ÿ˜ญ Not the skip.

On Windows, UTF-16 files are by default converted to UTF-8. UTF-8 formatted text files are well supported on both Windows and Unix/Linux. Living that dual-boot life fr fr.

UTF-16 and UTF-8 encoding are fully compatible โ€” there will no text be lost in the conversion. But! When an UTF-16 to UTF-8 conversion error occurs, for instance when the UTF-16 input file contains an error, the file will be skipped. ๐Ÿ’€

When option -u is used, the output file will be written in the same UTF-16 encoding as the input file. Option -u prevents conversion to UTF-8. Lowkey a protect-the-vibe move.

Heads up: dos2unix and unix2dos have no option to convert UTF-8 files to UTF-16. Not a thing. Don't ask, it's just not.

Also, ISO and 7-bit mode conversion do not work on UTF-16 files. Periodt.

๐Ÿฆ‹ Byte Order Mark

On Windows, Unicode text files typically have a Byte Order Mark (BOM), because many Windows programs (including Notepad) add BOMs by default. See also <https://en.wikipedia.org/wiki/Byte_order_mark>.

On Unix, Unicode files typically don't have a BOM. It is assumed that text files are encoded in the locale character encoding. Very "trust the locale" of them.

dos2unix can only detect if a file is in UTF-16 format if the file has a BOM. When an UTF-16 file doesn't have a BOM, dos2unix will see the file as a binary file. ๐Ÿซ  Awkward.

Use option -ul or -ub to convert an UTF-16 file without BOM. Saved you.

  • dos2unix writes by default no BOM in the output file. With option -b, dos2unix writes a BOM when the input file has a BOM.
  • unix2dos writes by default a BOM in the output file when the input file has a BOM. Use option -r to remove the BOM.
  • dos2unix and unix2dos write always a BOM when option -m is used.

๐ŸŒธ Unicode file names on Windows

dos2unix has optional support for reading and writing Unicode file names in the Windows Command Prompt. That means dos2unix can open files that have characters in the name that are not part of the default system ANSI code page. Slay ๐Ÿ’…

Wanna check if your dos2unix for Windows was built with Unicode file name support? Type dos2unix -V. Same energy as before.

There are some issues with displaying Unicode file names in a Windows console. See option -D, --display-enc. The file names may be displayed wrongly in the console, but the files will be written with the correct name. So like... the console is lying to you, but the files are fine. Trust the files ๐Ÿ™ˆ

๐Ÿงš Unicode examples

Convert from Windows UTF-16 (with BOM) to Unix UTF-8:

dos2unix -n in.txt out.txt

Convert from Windows UTF-16LE (without BOM) to Unix UTF-8:

dos2unix -ul -n in.txt out.txt

Convert from Unix UTF-8 to Windows UTF-8 with BOM:

unix2dos -m -n in.txt out.txt

Convert from Unix UTF-8 to Windows UTF-16:

unix2dos < in.txt | iconv -f UTF-8 -t UTF-16 > out.txt

๐Ÿ”ฅ GB18030 ๐Ÿ”ฅ

GB18030 is a Chinese government standard. A mandatory subset of the GB18030 standard is officially required for all software products sold in China. See also <https://en.wikipedia.org/wiki/GB_18030>.

GB18030 is fully compatible with Unicode, and can be considered an unicode transformation format. Like UTF-8, GB18030 is compatible with ASCII. GB18030 is also compatible with Windows code page 936, also known as GBK. Networking, but make it encoding ๐Ÿค

On Unix/Linux, UTF-16 files are converted to GB18030 when the locale encoding is set to GB18030. Note that this will only work if the locale is supported by the system. Use command locale -a to get the list of supported locales. No locale, no conversion, no exceptions.

On Windows you need to use option -gb to convert UTF-16 files to GB18030.

GB18030 encoded files can have a Byte Order Mark, like Unicode files. Same BOM energy.


โญ EXAMPLES โญ

Read input from 'stdin' and write output to 'stdout':

dos2unix < a.txt
cat a.txt | dos2unix

Convert and replace a.txt. Convert and replace b.txt:

dos2unix a.txt b.txt
dos2unix -o a.txt b.txt

Convert and replace a.txt in ascii conversion mode:

dos2unix a.txt

Convert and replace a.txt in ascii conversion mode, convert and replace b.txt in 7bit conversion mode:

dos2unix a.txt -c 7bit b.txt
dos2unix -c ascii a.txt -c 7bit b.txt
dos2unix -ascii a.txt -7 b.txt

Convert a.txt from Mac to Unix format:

dos2unix -c mac a.txt
mac2unix a.txt

Convert a.txt from Unix to Mac format:

unix2dos -c mac a.txt
unix2mac a.txt

Convert and replace a.txt while keeping original date stamp:

dos2unix -k a.txt
dos2unix -k -o a.txt

Convert a.txt and write to e.txt:

dos2unix -n a.txt e.txt

Convert a.txt and write to e.txt, keep date stamp of e.txt same as a.txt:

dos2unix -k -n a.txt e.txt

Convert and replace a.txt, convert b.txt and write to e.txt:

dos2unix a.txt -n b.txt e.txt
dos2unix -o a.txt -n b.txt e.txt

Convert c.txt and write to e.txt, convert and replace a.txt, convert and replace b.txt, convert d.txt and write to f.txt:

dos2unix -n c.txt e.txt -o a.txt b.txt -n d.txt f.txt

๐ŸŒˆ RECURSIVE CONVERSION ๐ŸŒˆ

In a Unix shell the find(1) and xargs(1) commands can be used to run dos2unix recursively over all text files in a directory tree. For instance, to convert all .txt files in the directory tree under the current directory, type:

find . -name '*.txt' -print0 |xargs -0 dos2unix

The find(1) option -print0 and corresponding xargs(1) option -0 are needed when there are files with spaces or quotes in the name. Otherwise these options can be omitted. Another option is to use find(1) with the -exec option:

find . -name '*.txt' -exec dos2unix {} \;

In a Windows Command Prompt the following command can be used:

for /R %G in (*.txt) do dos2unix "%G"

PowerShell users can use the following command in Windows PowerShell:

get-childitem -path . -filter '*.txt' -recurse | foreach-object {dos2unix $_.Fullname}

Recursion really said "I'll handle it" ๐Ÿ’ช


๐Ÿ’œ LOCALIZATION ๐Ÿ’œ

๐ŸŒธ LANG

The primary language is selected with the environment variable LANG. The LANG variable consists out of several parts. The first part is in small letters the language code. The second is optional and is the country code in capital letters, preceded with an underscore. There is also an optional third part: character encoding, preceded with a dot. A few examples for POSIX standard type shells:

export LANG=nl               Dutch
export LANG=nl_NL            Dutch, The Netherlands
export LANG=nl_BE            Dutch, Belgium
export LANG=es_ES            Spanish, Spain
export LANG=es_MX            Spanish, Mexico
export LANG=en_US.iso88591   English, USA, Latin-1 encoding
export LANG=en_GB.UTF-8      English, UK, UTF-8 encoding

For a complete list of language and country codes see the gettext manual: <https://www.gnu.org/software/gettext/manual/html_node/Usual-Language-Codes.html>

On Unix systems you can use the command locale(1) to get locale specific information.

๐ŸŽ€ LANGUAGE

With the LANGUAGE environment variable you can specify a priority list of languages, separated by colons. dos2unix gives preference to LANGUAGE over LANG. For instance, first Dutch and then German: LANGUAGE=nl:de. You have to first enable localization, by setting LANG (or LC_ALL) to a value other than C, before you can use a language priority list through the LANGUAGE variable. See also the gettext manual: <https://www.gnu.org/software/gettext/manual/html_node/The-LANGUAGE-variable.html>

If you select a language which is not available you will get the standard English messages. Sorry bestie, English it is ๐Ÿ˜ญ

๐Ÿฆ‹ DOS2UNIX_LOCALEDIR

With the environment variable DOS2UNIX_LOCALEDIR the LOCALEDIR set during compilation can be overruled. LOCALEDIR is used to find the language files. The GNU default value is /usr/local/share/locale. Option --version will display the LOCALEDIR that is used.

Example (POSIX shell):

export DOS2UNIX_LOCALEDIR=$HOME/share/locale

โœจ RETURN VALUE โœจ

On success, zero is returned. When a system error occurs the last system error will be returned. For other errors 1 is returned.

Big caveat coming at you: the return value is always zero in quiet mode, except when wrong command-line options are used. Yes, even if stuff goes sideways. Quiet mode really said "no thoughts, head empty" ๐Ÿ’€

๐Ÿ‘‘ STANDARDS ๐Ÿ‘‘

<https://en.wikipedia.org/wiki/Text_file>

<https://en.wikipedia.org/wiki/Carriage_return>

<https://en.wikipedia.org/wiki/Newline>

<https://en.wikipedia.org/wiki/Unicode>

Look at all that lore ๐Ÿ“š


๐Ÿซถ AUTHORS ๐Ÿซถ

Benjamin Lin - <blin@socs.uts.edu.au>, Bernd Johannes Wuebben (mac2unix mode) - <wuebben@kde.org>, Christian Wurll (add extra newline) - <wurll@ira.uka.de>, Erwin Waterlander - <waterlan@xs4all.nl> (maintainer)

Project page: <https://waterlander.net/dos2unix/>

SourceForge page: <https://sourceforge.net/projects/dos2unix/>

Shoutout to the whole squad for this thing existing ๐ŸŽ€


๐Ÿ’– SEE ALSO ๐Ÿ’–

file(1) find(1) iconv(1) locale(1) xargs(1)


And that's a wrap on the whole page, bestie!! You made it to the end, I'm so proud of you fr fr ๐ŸŒŸ This beauty is from the dos2unix package, version 1.0 โ€” and the page itself is dated 2026-08-27. Go forth and convert those line endings, you absolute icon ๐Ÿ’…๐Ÿ‘‘๐Ÿฆ‹

๐Ÿ“ฆ where this page comes from