2つのgrep(含むと除く)とawk [冗長]を使用して検索

2つのgrep(含むと除く)とawk [冗長]を使用して検索

AAAファイルには含まれていませんが、ファイルの内容を特定の抽出してファイルにすべてのパスファイルを保存したいと思いますBBB

私はたくさん試しましたが、これは私の目標に近いです。

find /data/my_project -type f -name "*.php" -exec grep -q "AAA" {} \; -exec grep -L "BBB" {} \; -exec awk '/AAA/{print $NF}'> /tmp/tables_names.txt {} \;  -print > /tmp/class_list.txt

しかし...結果には時々ファイルとAAA..だけが含まれます。AAABBB

編集する:

次の質問とほぼ同じです。1つの文字列を含むが他の文字列は含まないファイルを見つけるしかし、証明された答えがなければ、読むのは本当に難しいです。私の答えの75%は本当に申し訳ありません...しかし、一致するファイルパスだけでなく、一致するファイルの抜粋(テキストの一部)も返したいです!

ベストアンサー1

*.phpファイル名が含まれているが含まれていないファイル名と一致するすべての一般ファイルを見つけ、/data/my_projectそのパス名を次の場所に保存します。AAABBB/tmp/class_list.txt

find /data/my_project -type f -name '*.php' \
    -exec grep -qF 'AAA' {} ';' \
    ! -exec grep -qF 'BBB' {} ';' \
    -print >/tmp/class_list.txt

おすすめ記事