Coba
find /srv/www/*/htdocs/system/application/ -name "*.php" -exec grep "debug (" {} \; -print
Ini harus secara rekursif mencari folder di bawah application untuk file dengan .php ekstensi dan teruskan ke grep .
Pengoptimalan untuk ini adalah mengeksekusi:
find /srv/www/*/htdocs/system/application/ -name "*.php" -print0 | xargs -0 grep -H "debug ("
Ini menggunakan xargs untuk meneruskan semua .php output file dengan find sebagai argumen untuk satu grep perintah;misalnya, grep "debug (" file1 file2 file3 . -print0 pilihan find dan -0 opsi xargs pastikan spasi dalam nama file dan direktori ditangani dengan benar. -H opsi diteruskan ke grep memastikan bahwa nama file dicetak dalam semua situasi. (Secara default, grep mencetak nama file hanya ketika beberapa argumen diteruskan.)
Dari man xargs:
-0
Item input diakhiri dengan karakter null alih-alih spasi, dan tanda kutip serta backslashare tidak khusus (setiap karakter diartikan secara harfiah). Menonaktifkan akhir string file, yang diperlakukan seperti argumen lainnya. Berguna saat item input mungkin berisi spasi putih, tanda kutip, atau garis miring terbalik. GNU menemukan
-print0opsi menghasilkan input yang cocok untuk mode ini.
find bahkan tidak diperlukan untuk contoh ini, seseorang dapat menggunakan grep langsung (setidaknya GNU grep ):
grep -RH --include='*.php' "debug (" /srv/www/*/htdocs/system/application/
dan kami turun ke garpu proses tunggal.
Opsi:
-R, --dereference-recursive Read all files under each directory, recursively. Follow all symbolic links, unlike -r.-H, --with-filename Print the file name for each match. This is the default when there is more than one file to search.--include=GLOB Search only files whose base name matches GLOB (using wildcard matching as described under --exclude).--exclude=GLOB Skip any command-line file with a name suffix that matches the pattern GLOB, using wildcard matching; a name suffix is either the whole name, or any suffix starting after a / and before a +non-/. When searching recursively, skip any subfile whose base name matches GLOB; the base name is the part after the last /. A pattern can use *, ?, and [...] as wildcards, and \ to quote a wildcard or backslash character literally.