GNU/Linux >> Linux の 問題 >  >> Linux

Linux ファイル システムで dos 形式のファイルを見つける方法

私は幸運でした

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

自分で行末を確認してください。


Linux
  1. LinuxでファイルをUTF-8エンコーディングに変換する方法

  2. Linuxでファイルを見つける方法

  3. LinuxファイルシステムですべてのPythonファイルを検索しますか?

  1. Linuxですべてのディレクトリのファイルを再帰的に検索する方法

  2. Linuxで重複ファイルを見つける方法

  3. Linux でフル パスを含むファイルを一覧表示するにはどうすればよいですか?

  1. Linuxでファイルを見つける方法

  2. Linuxでディスクパーティションをフォーマットする方法

  3. Linuxで(空の)ファイルを切り捨てる方法