Apa yang ringkas perintah yang dapat saya gunakan untuk menemukan semua file yang TIDAK berisi string teks?
Saya mencoba ini (menggunakan -v untuk membalikkan parameter grep) tidak berhasil:
find . -exec grep -v -l shared.php {} ;
Seseorang mengatakan ini akan berhasil:
find . ! -exec grep -l shared.php {} ;
Tapi sepertinya tidak berhasil untuk saya.
Halaman ini memiliki contoh ini:
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
Tapi itu rumit dan sama sekali tidak ringkas.
ps:Saya tahu bahwa grep -L *
akan melakukan ini, tetapi bagaimana saya bisa menggunakan perintah find dalam kombinasi dengan grep ke file yang dikecualikan adalah yang benar-benar ingin saya ketahui.
pss:Saya juga tidak yakin bagaimana grep menyertakan subdirektori dengan grep -L *
sintaks, tetapi saya masih ingin tahu cara menggunakannya dengan find
Jawaban yang Diterima:
find . -type f | xargs grep -H -c 'shared.php' | grep 0$ | cut -d':' -f1
ATAU
find . -type f -exec grep -H -c 'shared.php' {} ; | grep 0$ | cut -d':' -f1
Di sini kita menghitung jumlah baris yang cocok (menggunakan -c
) dalam sebuah file jika hitungannya adalah 0 maka itu adalah file yang diperlukan, jadi kami memotong kolom pertama yaitu nama file dari output.