grep
を使用して、特定の文字列に一致する行を抽出することがわかっています。今ではたくさんのファイルがあり、どのファイルに特定の文字列が含まれているかを知りたい。これを実現するためのbashコマンドを使用する方法はありますか?ありがとう。特定の文字列を含むファイル名を出力するbashコマンド
答えて
grep -lはファイル名のみを表示します。
私はそれが十分に解決しない場合は、何か
vi $(grep -l pattern) # edit all files containing pattern
を含むファイルを編集するためのすべての時間があなたの質問を絞り込んでください、これを使用しています。
洗練は私の最初の答えの下のコメントで与えられました。複数のパターンがあり、タスクはそれらのすべてに一致するファイルのリストを取得することです。 GNUを含むほとんどのgrepは、正規表現&交差演算子を実装していません。まず、最初のパターンに一致するファイルのリストを取得します。次に、そのファイルのリストを別のgrepに送って次のパターンに対してテストします。
grep -l pat2 $(grep -l pat1 $(grep -l pat0 *)))
# $(grep -l pat0 *) gets replaced with the names of files matching pat0
# then $(grep -l pat1 <list>) is further refined to include only those matching pat1
# then $(grep -l pat2 <that-list>) is refined once more
xargsのを使用したソリューションは、ネストを離れて折るだけでなく、上記の溶液中でいくつかの弱点に対処します。ファイル名にスペースがある場合
一つのアプローチは、コマンド不器用で置換し、休憩です。私たちは、それぞれのgrep -l段階でのファイル出力のリストを取り、xargsのを使用して、次のステージの引数に変換:このため
grep -l pat0 * | xargs grep -l pat1 | xargs grep -l pat2
A「コンパイラ」を書き込むことができ、例えばもちろん
# the multigrep shell function takes these arguments and produces a pipeline
# like above, then evaluates it using eval.
multigrep pat0 pat1 pat2 *
元のメッセージに取り上げられるようパターンだけで、文字列に固定されている場合、grepするに-Fを追加します。
xargsは単にgrepを実行し、stdinからのマテリアルを期待するので、ステージが空のファイルリストを生成すると、この問題は解消します。通常の/ dev/null引数のハックを適用することができます。もちろん、GNU xargsには空の場合は実行されません。 – Kaz
ありがとうございました! – user1224398
GNU grepには、あなたが探している正規表現の機能を持つ-P(PCRE)が必要です。 – jordanm
- 1. ファイル名に特殊文字を含むファイルを削除する
- 2. コマンド出力文字列から特定の要素を抽出します。
- 3. Bash文字列(コマンド出力)の等価性テスト
- 4. MongoDB:特定の文字のみを含む文字列をフィルタリングするには?
- 5. 文字を含む文字列を含む文字列
- 6. Linux - 文字列を含む名前のファイルを見つける
- 7. "find"コマンドを使用してディレクトリ内の特定の文字列を含むファイルを見つけるには?
- 8. 特定の文字列を含む行を削除します。
- 9. linux上の特定の文字列を含むすべてのディレクトリ/ファイルの名前を変更する方法
- 10. 特定の文字列を含むが7番目の文字を含むレコードを返す
- 11. .htmファイルのディレクトリを検索して、特定の文字列を含まないファイルを出力します。
- 12. bashコマンドに文字列式を含める
- 13. ディレクトリに名前をつけて特定の文字列を含むファイルを検索します
- 14. 特定の文字列を含む配列リストをチェックするメソッド
- 15. matlabに文字列と数字を含む.txt出力を作成する
- 16. 特定の文字列でファイル名を除外するRegExパターン
- 17. bash - 文字を含むインクリメント変数
- 18. 特定の列に空の文字列を含む行を削除します
- 19. 特定の順序で文字列を含むJTable列を並べ替える
- 20. クラス名を含む文字列からクラスファイル名を呼び出す
- 21. bashの複数の特定の文字列の間でテキストを抽出する
- 22. 列名を含む連結文字列に変換する
- 23. MongoDB文書で特殊文字を含む文字列を検索する
- 24. 特定の文字列を含む行全体をフィルタリングする方法
- 25. 300k +文字列を含むリスト内の重複要素を特定する
- 26. 大きな文字列からワイルドカードを含む文字列を抽出する
- 27. ggplot2:特殊文字を含む列をプロットする方法は?
- 28. 置換がない#{foo}を含む文字列を出力する
- 29. バックスラッシュを含む文字列
- 30. 文字列を含むsyslog?
ありがとうございました。 '-l'は本当に必要な操作ですが、複数のパターンがある場合、どのパターンを同時にすべてのパターンに一致する行を含むよりも見つけることができますか? – user1224398
素晴らしいKaz!このコマンドは非常に役に立ちます! :) –
複数のパターンをANDのように組み合わせることについては、上記の考え方に従ってください。 pattern1と一致するファイルのリストを取得します。次にそれを別のgrep -lにフィードします。私はこれに対してもう一度答えよう。 – Kaz