【Linux】LinuxでCRLFとLFを一括で相互変換する

ひでまる

09月07日, 2022
目次

コーディングしてると CRLF と LF が混在してストレスが溜まる機会があります
その時にコマンド一つでどちらかに変換できると便利なので、その方法を書き残します

nkf コマンド

nkf コマンドとは Linux や Windows で異なる改行コードを変換するためのコマンドです

インストール

Ubuntu

$ sudo apt install nkf

Arch

$ sudo pacman -S nkf

Mac

$ brew install nkf

使い方

使い方は以下の通りです
引数に -u と -w がありますが、それはそれぞれ Unix(LF) と Windows(CR+LF) の訳です

CRLF to LF

$ nkf -Lu --overwrite <変換するファイル>

LF to CRLF

$ nkf -Lw --overwrite <変換するファイル>

--overwrite とは

–overwrite オプションとは既存のファイルを直接上書きするオプションです
このオプションを入力しなかった場合はターミナルに改行コードが変換された文章が出力されるだけで、変換元のファイルの改行コードは変換されてません
変換する場合は–overwrite をつければ良いでしょう

カレントディレクトリ内のファイルを全て変換

CRLF to LF

$ grep -Ilrs `printf "\r\n"` . | xargs nkf -Lu --overwrite

こちらは find コマンドでファイルを検索して範囲に入れて、grep で改行コードが CRLF のファイルを検索して範囲を狭めて、その結果を nkf で LF に変換するコマンドです

LF to CRLF

$ grep -Ilrs `printf "\n"` . | xargs nkf -Lw --overwrite

こちらも同様に CRLF に変換しております

alias に登録すると便利

よく使うコマンドなので、alias に登録しましょう

alias crlf2lf="grep -Ilrs `printf "\r\n"` . | xargs nkf -Lu --overwrite"
alias lf2crlf="grep -Ilrs `printf "\n"` . | xargs nkf -Lw --overwrite"

これを実行することで楽に改行コードの相互変換が可能です。