Linux で grep を使用して DOS の行末 (CRLF) を含むファイルを検索するにはどうすればよいでしょうか? 質問する

Linux で grep を使用して DOS の行末 (CRLF) を含むファイルを検索するにはどうすればよいでしょうか? 質問する

Linux で grep を使用して DOS の行末を含むファイルを検索したいです。次のようになります:

grep -IUr --color '\r\n' .

上記は文字通りには一致しているように見えますが、rnこれは望ましいことではありません。

この出力はxargsを介してtodosにパイプされ、次のようにcrlfをlfに変換します。

grep -IUrl --color '^M' . | xargs -ifile fromdos 'file'

ベストアンサー1

おそらく、grep は、この目的には適したツールではありません。grep は、すべてのファイル内の一致する行ごとに 1 行を出力します。たとえば、10 行のファイルに対して todos を 10 回実行したい場合を除いて、grep は最適な方法ではありません。find を使用してツリー内のすべてのファイルに対して file を実行し、その中の "CRLF" を grep すると、各ファイルに対して、DOS スタイルの行末を持つ 1 行の出力が得られます。

find . -not -type d -exec file "{}" ";" | grep CRLF

次のようなものが得られます:

./1/dos1.txt: ASCII text, with CRLF line terminators
./2/dos2.txt: ASCII text, with CRLF line terminators
./dos.txt: ASCII text, with CRLF line terminators

おすすめ記事