Jawaban:
Gunakan opsi baris perintah -vatau --invert-match,
ls -R |grep -v -E .*[\.exe]$\|.*[\.html]$
grep -v
atau
grep --invert-match
Anda juga dapat melakukan hal yang sama menggunakan find:
find . -type f \( -iname "*" ! -iname ".exe" ! -iname ".html"\)
Info lebih lanjut di sini .
findperintah adalah solusi yang paling semantik untuk masalah XY ini. Menggabungkan lsdan grepuntuk tujuan ini tampaknya paling jelek. Ini harus menjadi jawaban yang diterima. (+1)
Tambahkan -vopsi ke grepperintah Anda untuk membalikkan hasilnya.
grep "subscription" | grep -v "spec"
-v/--invert-matchtidak harus membalik apakah kode pengembaliangrepmengindikasikan eksekusi yang sukses, tetapi sebaliknya akan cocok dengan baris yang jika tidak akan dicocokkan. Mereka yang ingin membalikkan kode pengembalian (yaitu berhasil jika semua baris tidak cocok dengan pola, bukan setidaknya satu) harus digunakan! grep. Temuan ini digunakan dalam ekspresi kondisional, misalnya:if ! ls | grep -qE ".(\.exe)$"; then echo No .exe files in $(pwd); fi.