私は幸運でした
find . -name "*.php" -exec grep -Pl "\r" {} \;
どうですか:
find . -name "*.php" | xargs file | grep "CRLF"
^M
を試して使用するのは信頼できないと思います ファイルを探してみてください。
「信頼できない」という言葉の正確な意味はわかりませんが、試してみてください:
find . -name '*.php' -print0 | xargs -0 grep -l '^M$'
これはよりatrocious-filenames-with-spaces-in-themフレンドリーを使用します オプションを検索し、行末の直前のキャリッジ リターンのみを検索します。
^M
単一の CTRL です M 文字、2 ではありません
また、1 であってもファイルが一覧表示されます。 行は DOS モードになっています。これは、UNIX 以外のエディタによって処理された UNIX ファイルであったため、いずれにせよ必要なことであると考えられます。
vim がファイルを DOS 形式として報告しているという更新に基づいて:
vim が の場合 DOS 形式として報告し、次にすべて 行は CRLF
で終わります .それがvimの仕組みです。 一つでも 行に CR
がありません の場合、UNIX 形式と見なされ、^M
文字はバッファに表示されます。すべてが DOS 形式の場合、^M
文字が表示されない:
Vim は dos と unix の両方の行末を探しますが、Vim には unix 形式が優先されます。
- ファイル内のすべての行が CRLF で終わる場合、dos ファイル形式が適用されます。つまり、行をバッファーに読み込むときに各 CRLF が削除され、バッファーの 'ff' オプションが dos になります。
- 1 つまたは複数の行が LF のみで終わる場合、UNIX ファイル形式が適用されます。つまり、各 LF が削除されます (ただし、各 CR はバッファーに存在し、^M として表示されます)、バッファー 'ff'オプションは unix になります。
あなたが本当に ファイルの内容を知りたい場合は、vim のようなあまりにもスマートなツールに頼らないでください :-)
用途:
od -xcb input_file_name | less
自分で行末を確認してください。