LaravelでちょっとしたWebアプリを作ろうとしてたんですが、gitでステージングした時に、

warning: LF will be replaced by CRLF in ~~~

っていうのが大量に出ました。 直訳すると「~~~のLFはCRLFに置き換えられますよ」ってことで、改行コードがLFになってたみたいです。

200ファイルぐらいが対象だったんですが、最後の行に「ローカルの改行コードは変更されません」みたいなことが書いてありまして
「リモートのコードはCRLFなのに、ローカルのコードはLFのままなのは気持ち悪いなぁ」と思っていたので、それを一括変換したというメモです。

nkfコマンドをインストール

sedコマンドとか色々やり方はあるんですが、nkfコマンドという見たこと無いコマンドがあったので、これでやってみることにしました。

インストールで参照したのはこの記事

これのWindows10にzipでインストールするっていうところを参照して、やりました。


ちなみにnkfってNetwork Kanji Filterの略らしいですね。おもろい。

ディレクトリから対象ファイルを検索して頑張る

nkfのインストールが終わったので、いざ対象のファイルの改行コードを変更してみようということで

参照したのがこの記事

記事はCRLF→LFの変換をしようとしていますが、grepのところをうまくいじってやれば、逆もいけます。

LFのファイル検索はこんな感じ

find . -type f | xargs file | grep -E " LF "

要は前半の

find . -type f | xargs file

で、ディレクトリ配下のファイル情報を抜き出しにいって
後半のgrepで" LF "っていう文字列を含むものだけ表示すると

ただ、これディレクトリ配下全部検索だから、勿論gitignoreで無視してるものも検索対象になるので、すごい時間かかるからやめよ~~ってことにしました。

簡単な解決策

じゃあどうしたのかといいますと

gitをステージングしたときのWarningメッセージを全部持ってきまして

warning: LF will be replaced by CRLF in ~~~

これの前半部分を、nkfの改行文字変換のコマンドに置換するだけ

nkf32 -Lw --overwrite hogehoge.php

こういうこと。

これを流したら万事解決。めでたしめでたし。