特定の単語が含まれているファイルを確認するには、いくつかのファイルをgrepする必要があります:
grep -l word *
次に、ファイルのリストをgrepして、どのファイルに別の単語が含まれているかを確認する必要があります。簡単な方法はおそらくスクリプトを書くことでしょうが、私はそれをどのように操作するのかよくわかりません。
コメント
回答
ファイル名に空白、一重引用符、二重引用符またはバックスラッシュ文字(または-で始まるGNU grep
)を使用すると、次のことができます。
grep -l word * | xargs grep word2
Xargs最初のgrepの各ファイルに対して2番目のgrepを実行します。
GNU grep
/ xargs
または互換性がある場合、次の方法で信頼性を高めることができます。
grep -lZ word ./* | xargs -r0 grep word2
-Z
を使用するとgrep
xargs -0
で使用できるようにファイル名をNUL区切りで出力します。-r
オプションをxargs
は、最初のgrep
が何も見つからない場合に2番目のgrep
が実行されるのを回避します。
回答
回答
単語を含むファイルを検索してから、別の単語を含むファイルを除外する必要がある場合は、次のような一連のコマンドを使用できます。
grep word * | awk -F ":" "{print $1}"|uniq | xargs grep word2
-
grep word *
-「word」を含むすべてのファイルが表示され、ファイル名がリストの最初になります。 -
awk -F ":" "{print $1}"
-結果のファイル名のみを出力します -
uniq
-ファイル名を以上印刷しないようにします -
xargs grep word2
-取得したファイルのリストを再度検索します。
コメント
- @don_crisstiしかし、ピースを組み合わせる
grep -l word1 * | xargs -d'\n' grep -l word2
は、ほとんど誰も使用しないほど奇妙な改行以外のすべてで機能します。
grep
?GNUgrep
?Linux、Solaris、BSDを使用していますか?