やりたいこと
通常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