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