SOLUSI 1 (gabungkan find
dan grep
)
Tujuan dari solusi ini bukan untuk menangani grep
kinerja tetapi untuk menunjukkan solusi portabel: juga harus bekerja dengan busybox atau versi GNU yang lebih tua dari 2,5.
Gunakan find
, untuk mengecualikan direktori foo and bar:
find /dir \( -name foo -prune \) -o \( -name bar -prune \) -o -name "*.sh" -print
Kemudian gabungkan find
dan penggunaan non-rekursif grep
, sebagai solusi portabel:
find /dir \( -name node_modules -prune \) -o -name "*.sh" -exec grep --color -Hn "your text to find" {} 2>/dev/null \;
SOLUSI 2 (penggunaan rekursif grep
):
Anda sudah tahu solusi ini, tetapi saya menambahkannya karena ini solusi terbaru dan efisien. Perhatikan ini adalah solusi yang kurang portabel tetapi lebih dapat dibaca manusia.
grep -R --exclude-dir=node_modules 'some pattern' /path/to/search
Untuk mengecualikan beberapa direktori, gunakan --exclude-dir
sebagai:
--exclude-dir={node_modules,dir1,dir2,dir3}
SOLUSI 3 (Ag)
Jika Anda sering mencari melalui kode, Ag (The Silver Searcher) adalah alternatif yang jauh lebih cepat daripada grep, yang disesuaikan untuk mencari kode. Misalnya, secara otomatis mengabaikan file dan direktori yang terdaftar .gitignore
, sehingga Anda tidak harus terus melewati opsi pengecualian yang rumit untuk grep
atau find
.