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:string
Penjelasan
Ini akan menemukan semua
.php
file lalu jalankangrep -H string
pada masing-masing. Denganfind
-exec
opsi,{}
digantikan oleh setiap file yang ditemukan.-H
memberi tahugrep
untuk mencetak nama file serta baris yang cocok. -
Dengan asumsi Anda memiliki versi
bash
yang 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:string
Penjelasan
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 globstar
Anda mengaktifkan fitur danglobstar
Bash opsi yang membuat**/*php
luaskan ke semua.php
file di direktori saat ini (**
cocok dengan 0 direktori atau lebih, jadi**/*php
cocok dengan./foo.php
juga) yang kemudian diambil untukstring
.