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. 特定の文字列を含む行全体を出力するawkコマンド
- 2. BASH - 特殊文字を含む文字列を解析する
- 3. 特定の単語を含む文字列を抽出する
- 4. Power BIクエリエディタ:特定の文字列を含む列名のリスト
- 5. 特定の文字列を含むファイルを移動するバッチスクリプト
- 6. 特定の文字列を含むExcelファイルを実行する
- 7. bashスクリプト - 出力に特定の文字列をチェックし
- 8. ファイルの各行から特殊文字を含む特定の文字列を抽出する方法
- 9. ファイル名に特殊文字を含むファイルを削除する
- 10. 名前に特定の文字列を含むMatlab FTPダウンロードファイル
- 11. Python zipfileを使用してZIPファイル名に特定の文字列を含むファイルを抽出します。
- 12. '*'を含むBash forループの文字列
- 13. 特定の文字を含む特定の長さの文字列のRegEx
- 14. コマンド出力文字列から特定の要素を抽出します。
- 15. Cで特定の文字列を含むファイルの行を置換する#
- 16. Bash - 特殊文字を含むtxtをエクスポートする
- 17. OBIEE 11g:ダッシュボードプロンプトで特殊文字を含む文字列を入力する
- 18. 特定の文字列を含むフォルダの名前を変更します。
- 19. linuxコマンドを使用して特定の文字列を含むファイルを一覧表示する方法
- 20. ファイル内の文字列を検索し、その文字列を含む行を出力する方法は?
- 21. MongoDB:特定の文字のみを含む文字列をフィルタリングするには?
- 22. オクターブ文字列を含む入力ファイルを要求する
- 23. Linux - 文字列を含む名前のファイルを見つける
- 24. sed出力ファイル名のエスケープ文字列
- 25. Bash文字列(コマンド出力)の等価性テスト
- 26. "find"コマンドを使用してディレクトリ内の特定の文字列を含むファイルを見つけるには?
- 27. 常に特定の文字を含む文字列を生成するpython
- 28. R:特定の文字パターンを含む文字列を削除するには?
- 29. 特殊文字を含む部分文字列を抽出する -
- 30. 文字を含む文字列を含む文字列
ありがとうございました。 '-l'は本当に必要な操作ですが、複数のパターンがある場合、どのパターンを同時にすべてのパターンに一致する行を含むよりも見つけることができますか? – user1224398
素晴らしいKaz!このコマンドは非常に役に立ちます! :) –
複数のパターンをANDのように組み合わせることについては、上記の考え方に従ってください。 pattern1と一致するファイルのリストを取得します。次にそれを別のgrep -lにフィードします。私はこれに対してもう一度答えよう。 – Kaz