簡潔 コマンドを使用して、テキスト文字列を含まないすべてのファイルを検索できますか?
運が悪かったので(-vを使用してgrepのパラメーターを反転して)これを試しました:
find . -exec grep -v -l shared.php {} ;
誰かがこれでうまくいくと言った:
find . ! -exec grep -l shared.php {} ;
しかし、それは私にはうまくいかないようです。
このページには次の例があります:
find ./logs -size +1c > t._tmp
while read filename
do
grep -q "Process Complete" $filename
if [ $? -ne 0 ] ; then
echo $filename
fi
done < t._tmp
rm -f t_tmp
しかし、それは面倒で、まったく簡潔ではありません。
ps:grep -L *
これは実行されますが、検索コマンドをgrepと組み合わせて使用して、除外されたファイルを作成するにはどうすればよいですか。
pss:また、grep -L *
を使用してgrepにサブディレクトリを含める方法もわかりません。 構文ですが、find
での使用方法を知りたいです。 🙂
承認された回答:
find . -type f | xargs grep -H -c 'shared.php' | grep 0$ | cut -d':' -f1
または
find . -type f -exec grep -H -c 'shared.php' {} ; | grep 0$ | cut -d':' -f1
ここでは、一致する行の数を計算しています(-c
を使用) )ファイル内でカウントが0の場合、必要なファイルであるため、出力から最初の列、つまりファイル名を切り取ります。