grep - 現在grepで検索されているファイルのファイル名を印刷します。

grep - 現在grepで検索されているファイルのファイル名を印刷します。

一致するファイル名を取得するのに問題はありませんgrep。ただし、検索中のファイル階層の項目を検索するのに時間がかかるため(コンピュータの2000ファイルに1.4GBのデータ)、SSDがあるため、それほど時間がかかりません。私はそれが何であるか知りたいです。だから私は何かをしたいです。言葉が多いファイルの処理中に grep が各ファイルを一覧表示する出力です。

これはどのように達成できますか?

MacでBSD grepを使用してください。

ベストアンサー1

grep検索を開始する前に、別のプロセスを呼び出してファイル名を印刷する必要があります。もちろん、速度は遅くなるでしょうが、あなたの場合はgrepブートロード時間が短いので、現在の状況に比べて大きな問題はありません。

検索と実行を使用します。

find . -type f -exec sh -c 'printf "checking: %s\n" "$1"; grep pattern "$1"' sh {} \;

または、一括検索して実行してループ用のシェルを呼び出します。

find . -type f -exec sh -c 'for f do printf "checking: %s\n" "$f"; grep pattern "$f"; done' sh {} +

または、GNU 0で区切られたファイル引数でfindとxargsを使用します。

find . -type f -print0 | xargs -0 sh -c 'for f do printf "checking: %s\n" "$f"; grep pattern "$f"; done'

ところで、macOSを使用していることが確認されます。 grep、sed、awkなどのGNUソフトウェアのインストールを検討してください。

おすすめ記事