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

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

grep は、おそらくこれに必要なツールではありません。すべてのファイルの一致する行ごとに行を出力します。たとえば、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

Ctrl を使用 +V , Ctrl +M リテラルのキャリッジ リターン文字を grep 文字列に入力します。そう:

grep -IUr --color "^M"

動作します - ^M の場合 私が提案したように、あなたが入力した文字通りの CR があります。

ファイルのリストが必要な場合は、 -l を追加します

説明

  • -I バイナリ ファイルを無視
  • -U grep が CR 文字を削除するのを防ぎます。デフォルトでは、テキスト ファイルであると判断した場合にこれを行います。
  • -r 各ディレクトリの下にあるすべてのファイルを再帰的に読み取ります。

RipGrep の使用:

rg -l \r
-l, --files-with-matches
Only print the paths with at least one match.

https://github.com/BurntSushi/ripgrep


Linux
  1. Locateコマンドを使用してLinuxでファイルをすばやく検索する

  2. Linux でのファイルの変更とファイルの実行を監査する方法

  3. Linux 上の Vi:DOS 形式のファイルの ^M 行末を表示

  1. ファイル内の複数行パターンを検索するにはどうすればよいですか?

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

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

  1. Linuxでテキストを含まないテキストファイルを見つける方法は?

  2. Linux で特定のテキストを含むすべてのファイルを見つけるにはどうすればよいですか?

  3. Linux の man ページを検索する方法 (grep などを使用)