dos2unix はテキストファイルの改行コードを CRLF(DOS/Windows) や CR(Mac 旧形式) から LF(Unix/Linux) に変換するコマンドです。UTF-8/UTF-16 などのエンコーディングや BOM の扱いにも対応します。日常では「Windows で作ったスクリプトを Linux で動かす前に整形」「混在した改行を一括修正」などで使います。(dos2unix.sourceforge.io)
構文(Syntax)
# 置換(インプレース。既定)
dos2unix [OPTIONS] FILE...
# 新しいファイルに書き出し(ペアで指定)
dos2unix -n INFILE OUTFILE [INFILE OUTFILE]...
# 標準入出力(フィルタとして利用)
dos2unix [OPTIONS] -O FILE1 FILE2 ... > OUTPUT
# または
dos2unix < in.txt > out.txt
- 既定は インプレース変換(
-o, --oldfile)。 -nは IN/OUT をペアで与える必要があります(ワイルドカード不可)。(manpages.debian.org)
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-o, --oldfile FILE... | 既存ファイルをその場で変換(既定)。所有者/パーミッションを保持(Unix)。 | dos2unix -o script.sh (manpages.debian.org) |
-n, --newfile IN OUT ... | 新しいファイルへ書き出し(IN/OUT をペアで)。 | dos2unix -n a.txt a.unix.txt (manpages.debian.org) |
-k, --keepdate | 出力のタイムスタンプを入力と同じに保つ。 | dos2unix -k -o README.txt (manpages.debian.org) |
-q, --quiet / -v, --verbose | 進捗や警告の抑制 / 追加情報表示。 | dos2unix -q file.txt (manpages.debian.org) |
-f, --force | バイナリ判定でも強制変換。通常はスキップ(-s, --safe が既定)。 | dos2unix -f binlike.dat (manpages.debian.org) |
-c, --convmode {ascii,7bit,iso,mac} | 変換モード(ascii=通常、7bit=上位ビット落とし、iso=DOS↔ISO-8859-1、mac=CR→LF)。 | dos2unix -c mac oldmac.txt (manpages.debian.org) |
-b, --keep-bom | 入力に BOM があれば出力にも BOM を保持。 | dos2unix -b utf8bom.txt (manpages.debian.org) |
-r, --remove-bom | BOM を除去(Unix 変換時の既定)。 | dos2unix -r utf8bom.txt (manpages.debian.org) |
-m, --add-bom | 出力に BOM を付与(既定は UTF-8)。 | dos2unix -m file.txt (manpages.debian.org) |
-u, --keep-utf16 | UTF-16 入力を UTF-16 のまま書き出す(BOM 付与)。 | dos2unix -u -n in.txt out.txt (manpages.debian.org) |
-ul / -ub | BOM の無い UTF-16 を LE/BE と仮定して処理。 | dos2unix -ul -n in.txt out.txt (manpages.debian.org) |
-e, --add-eol | 最終行に改行が無ければ付加。 | dos2unix -e -o file.txt (manpages.debian.org) |
-i[FLAGS], --info[=FLAGS] | 変換せず行末/文字種/BOM等の情報を表示(c=要変換のみ、b=BOM、d/u/m=各改行数、0=NUL 終端など)。 | dos2unix -ic *.txt (manpages.debian.org) |
-O, --to-stdout | 標準出力へ書く(フィルタ動作、-oで復帰)。 | dos2unix -e -O a.txt b.txt > out.txt (manpages.debian.org) |
-F/-R/-S | シンボリックリンク: 追従/置換/スキップ。 | dos2unix -F docs/* (manpages.debian.org) |
-V, --version / -h, --help | バージョン/ヘルプ表示。 | dos2unix -V (manpages.debian.org) |
BOM の既定: Unix 変換(
dos2unix)は BOM を出力しないのが既定(-r)。-bで「入力に BOM があれば保持」、-mで常に付与。UTF-16 無 BOM の場合は-ul/-ubで仮定します。(manpages.debian.org)
実行例
Windows で作成したテキストをインプレースで変換
説明: 既存ファイルを書き換えて CRLF→LF にします。
コマンド:
dos2unix -o setup.sh
出力例(静かに成功。-v で詳細表示)
新しいファイルに書き出し(安全に元を残す)
説明: IN/OUT をペアで指定して保存先を分けます。
コマンド:
dos2unix -n readme.txt readme.lf.txt
(ワイルドカードは不可。複数はペアを並べます) (manpages.debian.org)
変換が必要なファイルだけを抽出して処理
説明: -ic で 要変換ファイルのみ列挙 → xargs に渡して一括変換。
コマンド:
find . -name '*.txt' -print0 | xargs -0 dos2unix -ic | xargs -0 dos2unix
(-print0/-0 は空白や引用符を含む名前に対応) (manpages.debian.org)
Mac(旧) の CR 改行を LF に変換
説明: 古い Mac 形式(CR のみ)を LF に。
コマンド:
dos2unix -c mac oldmac.txt
# 同等: mac2unix oldmac.txt
BOM を除去/付与する
説明: BOM を取り除く、または付ける。
コマンド:
dos2unix -r utf8bom.txt # 除去(Unix変換の既定動作)
dos2unix -m utf8.txt # 付与(UTF-8 BOM)
エラー例:-n のペアを崩して実行
説明: -n で IN/OUT の数が奇数だとエラーになります。
コマンド:
dos2unix -n a.txt
出力例(例):
dos2unix: files must be specified in pairs for --newfile
対処: dos2unix -n a.txt a.lf.txt のように IN/OUT を必ずペアで指定。(manpages.debian.org)
関連コマンド
unix2dos: LF→CRLF に変換(逆方向)。BOM の扱いは-b/-r/-mに準拠。(manpages.debian.org)mac2unix/unix2mac: 旧 Mac 形式(CR)との相互変換。(manpages.debian.org)file: ファイル種別や BOM/エンコード検出に。iconv: 文字コード変換(UTF-8 ↔ UTF-16 等)。(manpages.debian.org)sed/tr: 簡易な改行置換の補助(例:tr -d '\r'など)。
備考
- バイナリ安全: 既定でバイナリをスキップ(
-s)。誤検出は 100% 防げないため、確信がある場合のみ-fで強制。(manpages.debian.org) - UTF-16 の扱い: BOM が無い UTF-16 は自動判定できないため
-ul/-ubで仮定が必要。UTF-16 を保持したい場合は-u。(manpages.debian.org) - 再帰処理: ディレクトリ配下の一括変換は
find ... | xargs例が実践的。PowerShell/Windows でも専用のループ例あり。(manpages.debian.org) - 所有者/権限の保持: Unix のインプレース変換では所有者・グループ・RW権を保持。保持できない場合は変換中止(
--allow-chownで続行可)。(manpages.debian.org) - インストール: 多くのディストリでパッケージ
dos2unixを提供。macOS ではbrew install dos2unix、Windows 向けバイナリもあります。(SourceForge)
参考
- 公式サイト(ドキュメント/ダウンロード)
https://dos2unix.sourceforge.io/ - Debian manページ(最新版の詳細オプション・挙動)
https://manpages.debian.org/testing/dos2unix/dos2unix.1.en.html - Ubuntu manページ
https://manpages.ubuntu.com/manpages/focal/man1/dos2unix.1.html - ChangeLog(BOM 関連オプション追加の履歴など)
https://dos2unix.sourceforge.io/dos2unix/ChangeLog.txt - SourceForge プロジェクトページ(配布物)
https://sourceforge.net/projects/dos2unix/

コメント