動かざることバグの如し

近づきたいよ 君の理想に

改行コードがLF(Unix形式)でないテキストファイルを探すコマンド

やりたいこと

通常VSCodeで開発している限り改行コードはすべてLFになるので意識することはないのだが、 まれにCRLFが混じってしまっているファイルを扱おうとしてバグるケースが有る。

改行コードがLFでないファイルを抽出したい

コマンド

find . -type f -exec file {} + | grep -v ELF | grep -e "CRLF" -e " CR "
  • find . -type f:カレントディレクトリ以下全ファイルを検索
  • -exec file {} +:各ファイルのフォーマット情報を取得
  • grep -v ELF:バイナリファイル(ELF形式)を除外
  • grep -e "CRLF" -e " CR "Windows形式(CRLF)と旧Mac形式(CR)を抽出

例えば以下のような実行結果になる。日本語などマルチバイトの場合は「Unicode text」表記になる。

❯ find . -type f -exec file {} + | grep -v ELF | grep -e "CRLF" -e " CR "
./mixed_line_endings.txt: ASCII text, with CRLF, LF line terminators
./windows.txt:            Unicode text, UTF-8 text, with CRLF line terminators