dullwhaleのメモ帳

何度も同じことを調べなくてよいように...

治安の悪いgitリポジトリ内の文字コードをシェルからBOMなしUTF-8改行コードLFに統一する

他人から受け取ったファイルは文字エンコードShift_JISだったり、BOMがついていたり、改行コードがCRLFだったりする。 そのままファイルの編集を続けると、システムに繋げたり乗っけたりするタイミングで問題が発生しやすいから、BOMなしUTF-8 改行コードLFに統一したい。

通常の開発であればIDEやエディタに.editorconfigを追加すればよい。 ただし、そういった方法が取れない/取るまでもない状況もある。 そのような場合に使えるワンライナーを作ったからメモしておく。

事前にnkfコマンドのインストールが必要。

find -type f -not -path './.git/*' | xargs nkf --guess | grep -vE ": (BINARY|(ASCII|UTF-8) \(LF\))$" | rev | cut -d: -f2- | rev | xargs nkf -wLu --overwrite

revで2回反転させている箇所とか無駄が多いから、もっと効率の良い方法は考えられそう。 あまり大量のファイルを処理することは想定していない。