一部のファイルタイプを除くすべてのファイルをgrepしたいですか?


36

grepいくつかのファイルタイプを除き、特定のフォルダー内のファイルを再帰的に実行するにはどうすればよいですか?

たとえば、ワークスペースフォルダー内の文字列を探していますが、最終的にsqlファイル内を検索し、シリアル化された文字列を生成します。

そのため、この場合、grepSQLファイルを除くワークスペースフォルダーに移動します。

できればワンライナーを探しています。


5
Linux、Unix、unix-a-likesには、希望どおりの「ファイルタイプ」が実際にはないことに注意してください。ファイル名に「.c」または「.txt」または「.sql」という接尾辞が付いているのは慣例のみです。これらの接尾辞はWindowsスタイルの「拡張子」でさえなく、SQLまたはテキストまたはCソースコードが存在することを示すインジケータではありませんファイル内。
ブルースエディガー

回答:



8

これはあなたのためにそれを行い、.sqlと.txtファイルを除外します:

find /some/dir -type f ! -name '*\.sql' ! -name '*.txt' -print0 | xargs -0 grep 'foobar'

しかし、ackはあなたがやろうとしていることに対してはるかに良いツールのように思えます:

ack -a --nosql 'foobar' /some/dir

申し訳ありませんが、「ack」の部分は表示されず、回答に追加しましたが、現在は削除されています。
チャンス

バイナリファイルを含む別のユーザーのメモack - a --nobinary
Michael Mrozek

ファイル名パターンのバックスラッシュは不要です。
クサラナナンダ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.