Gunakan grep --include opsi:
grep -ir "string" --include="*.php" .
Jika Anda memiliki versi grep yang tidak memiliki --include opsi, Anda dapat menggunakan yang berikut ini. Keduanya diuji pada struktur direktori seperti ini:
$ tree
.
├── a
├── b
│ └── foo2.php
├── c
│ └── d
│ └── e
│ └── f
│ └── g
│ └── h
│ └── foo.php
├── foo1.php
└── foo.php
Di mana semua .php file berisi string string .
-
Gunakan
find$ find . -name '*php' -exec grep -H string {} + ./b/foo2.php:string ./foo1.php:string ./c/d/e/f/g/h/foo.php:stringPenjelasan
Ini akan menemukan semua
.phpfile lalu jalankangrep -H stringpada masing-masing. Denganfind-execopsi,{}digantikan oleh setiap file yang ditemukan.-Hmemberi tahugrepuntuk mencetak nama file serta baris yang cocok. -
Dengan asumsi Anda memiliki versi
bashyang cukup baru , gunakanglobstar:$ shopt -s globstar $ grep -H string **/*php b/foo2.php:string c/d/e/f/g/h/foo.php:string foo1.php:stringPenjelasan
Seperti yang dijelaskan dalam manual bash:
globstar
Jika disetel, pola '**' yang digunakan dalam konteks perluasan nama file akan cocok dengan semua file dan nol atau lebih direktori dan subdirektori. Jika pola diikuti oleh '/', hanya direktori dan subdirektori yang cocok.
Jadi, dengan menjalankan
shopt -s globstarAnda mengaktifkan fitur danglobstarBash opsi yang membuat**/*phpluaskan ke semua.phpfile di direktori saat ini (**cocok dengan 0 direktori atau lebih, jadi**/*phpcocok dengan./foo.phpjuga) yang kemudian diambil untukstring.