1. ホーム
  2. linux

[解決済み] Linuxのコマンドです。テキストファイルだけを「探す」方法は?

2022-10-25 01:57:22

質問

Googleで何度か検索した結果、出てきたのは。

find my_folder -type f -exec grep -l "needle text" {} \; -exec file {} \; | grep text

というのは非常に使い勝手が悪く、MIMEタイプ情報のような不要なテキストを出力してしまいます。何か良い解決策はありますか?私は、検索する必要がある多くのテキストファイルと同じフォルダに、多くの画像や他のバイナリファイルを持っています。

どのように解決するのですか?

これは古いスレッドですが、私はそれを偶然見つけて、私は非常に高速であることを発見した私の方法を共有することを考えました find を使用して非バイナリ ファイルのみを検索する非常に高速な方法であることがわかりました。

find . -type f -exec grep -Iq . {} \; -print

-I オプションはバイナリファイルを即座に無視することを指示し . オプションと -q を併用すると、テキストファイルに即座にマッチするので、非常に高速に処理されます。を変更することができます。 -print-print0 にパイプで接続します。 xargs -0 などにパイプすることができます(@lucas.werkmeisterさん、ありがとうございました!)。

また、最初のドットは、特定の BSD バージョンでのみ必要な find OS X などの特定の BSD バージョンでのみ必要です。しかし、これをエイリアスなどに置きたい場合は、常にそこにあっても何の支障もありません。

EDIT : @ruslan が正しく指摘しているように -and は暗黙の了解なので省略可能です。