OK
ディレクトリからその単語を含むすべての行を繰り返し出力したいと思います。ただし、結果から一部の拡張子を除外する必要があります。
*~
*.map
*.js except *.debug.js
私は試した:
grep -r --exclude={*~,*.map} "OK" /some/dir
結果からデバッグではないファイルをすべて削除する方法がわかりません.js
。
ベストアンサー1
以下でgrep
削除したいと思います。
grep -r --exclude={\*~,\*.map} "OK" bar/ | grep -vP '(?<!debug)\.js'
一致を逆にし、-v
パターンと一致しない行を印刷し、-P
Perl準拠の正規表現を有効にすることで、次を使用できます。否定的なレビュー。この特定の正規表現は.js
一致します。いいえ以前のdebug
意味は(一致を逆にするため)、その.js
ファイルだけが印刷されるという意味です。
しかし、@QuestionOverflowがコメントで指摘したように、フィルタリングという意図しない副作用があるかもしれません。ワイヤー含まれているOK
ため、js
ファイルgrep -v
名だけでなく出力全体に適用されます。これを防ぐには、コロンを追加するだけです(grep
ファイルの内容とファイル名を区別する役割)。
grep -r --exclude={*~,*.map} "OK" bar/ | grep -vP '(?<!debug).js:'
入力行にが含まれているか、foo.js:
ファイル名にが含まれている:
場合は、別のアプローチを使用してください。
grep -Tr --exclude={*~,*.map} "OK" bar/ | grep -vP '(?<!debug).js\t'
ファイル名とファイル内容の間にタブ文字が印刷されるようにします-T
。したがって、正規表現の末尾にgrep
aを追加すると、行の内容ではなくファイル名のみが一致します。\t
まだ、使用find
とにかくそれはおそらくもっと意味があるでしょう。