他人から受け取ったファイルは文字エンコードが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回反転させている箇所とか無駄が多いから、もっと効率の良い方法は考えられそう。 あまり大量のファイルを処理することは想定していない。