
bashを使用して次の結果を取得しようとしています。
grep
特定の部分文字列のファイルです。- これらのファイルのファイル名(スペースを含めることができます)を取得して印刷します。
- 各ファイル名を印刷して再度grepしたいのですが、今回はそのファイル内でのみ可能です。
結果は次のとおりです。
/tmp/file1.txt
it works!
/tmp/file2.txt
/tmp/file3.txt
it works!
次のコマンドを作成しようとしています。
grep -irl "something" . | xargs -I % sh -c 'echo "%"; cat "%" | grep -i "another thing" "%"'
説明:grep -l
ファイル名を返します。その後、このファイル名を印刷しecho "%"
てからファイル内でgrepを実行しようとします。
しかし幸運はありません。ここで教訓は何ですか?
明らかに、私の実際の問題/目標は、文字列Aを含むが文字列Bを含まないすべてのファイルを見つけることです。
追加の説明:似たようなものが欲しいが、grep A | grep -v B
一致するすべてのファイルのリストも欲しい。A
答え1
ここで教訓は何ですか?
おそらくプリンに卵を入れすぎないでください。
%( > grep -l -r - "$patternA" 。 | > ティー/開発/fd/7 | > xargs grep -L --"$patternB" >)7>&1