私のお気に入りのBASHコマンドの1つは次のとおりです。
find . -name '*.*' -exec grep 'SearchString' {} /dev/null \;
指定されたSearchStringの現在のディレクトリ以下のすべてのファイルのコンテンツを検索します。開発者として、これは時々便利になりました。
しかし、現在のプロジェクトとコードベースの構造により、「。svn」を含むディレクトリ内またはその下にあるファイルや、 「.html」で終わる
findのMANページは、私を混乱させました。-pruneを使用してみましたが、奇妙な動作をしました。.htmlページのみをスキップしようとして(開始するため)、私は試しました:
find . -wholename './*.html' -prune -exec grep 'SearchString' {} /dev/null \;
そして、私が望んでいた行動を得られませんでした。-pruneのポイントを見逃しているのではないかと思います。助けてくれませんか?
ありがとう
grep -rl 'SearchString'
find
ファイル内の検索に使用する前文で述べたように、これは単なるヒントです。
-name '*.*'
検索しません。名前にa が含まれるファイルのみを使用します(通常、使用するのはDOS主義ですが、Unixでは通常そのために使用します)。それらをすべて一致させるには、引数を完全に削除します:。または、grepをファイルにのみ適用する(およびディレクトリをスキップする)場合は、実行します。.
*.*
*
find . -exec ...
find . -type f -exec ...
find
bashコマンドではなく、別個のプログラム