私はOSXで使用されている単語をRuby on Railsアプリケーションで検索しており、特定のパターンに一致するディレクトリを除外したいgrep
と思います。
次のコマンドを使用しています。
grep -inRw -E 'direct' . --exclude-dir -E 'git|log|asset'
コマンドは私が想像したように実行されません。私はこれですアイデア働きます:
- 私- 大文字と小文字を区別しない検索
- N- パターンが見つかった行番号を印刷します。
- 右- 再帰検索
- 勝つ- 完全な言葉が欲しい。つまり、「direct」は一致しますが、「directory」は一致しません。
- - 金利- 拡張正規表現を使用してください。
- 「直接」- 私がマッチングしたい正規表現
- 。- 現在のディレクトリから検索
- --exclude-dir -E 'git|log|アセット'- git、log、またはアセットと一致するディレクトリを除外します。
ディレクトリ除外に関する限り、コマンドは依然として次に終了します。'./git'そして'。 /ログディレクトリだけでなく「./アプリケーション/資産」
私は明らかに基本的な知識が欠けていますが、それが何であるかわかりません。
ベストアンサー1
そのパターンは次のとおりです。球このパターンではありません。正規表現。 ~によるとinfo
ページ:
--除外-ディレクトリ=GLOB
名前のサフィックスがGLOBパターンと一致するコマンドラインディレクトリはスキップされます。再帰的に検索すると、デフォルト名がGLOBと一致するサブディレクトリはスキップされます。 GLOB の追加の末尾のスラッシュは無視されます。
だから、スイッチを複数回使用するか、あるいは、シェルが中括弧拡張をサポートしている場合は、それを短縮してシェルにパターンリストを拡張させることもできます。たとえば、次のようになります。
grep -inRw -E 'direct' . --exclude-dir={git,log,assets}
名前がgit
、log
およびassets
またはであるディレクトリを除外します。たとえば、次のようになります。
grep -inRw -E 'direct' . --exclude-dir={\*git,asset\*}
git
で終わるか始まるディレクトリ名を除外しますasset
。
シェルは、リストが存在する場合にのみリストを拡張します。中かっこ内には、ディレクトリ名/グローバル変数が複数ある必要があります。。