Katakanlah saya perlu menemukan fungsi GetTypes()
di semua file sumber C # ( .cs
) direktori / subdirektori.
Saya menggunakan grep -rn GetTypes *.cs
, tapi saya punya kesalahan dengan grep: *.cs: No such file or directory
. Saya harus menggunakan grep -rn GetTypes *
, tetapi dalam hal ini menunjukkan semua file tidak *.cs
hanya.
Perintah apa yang harus saya gunakan untuk menemukan string hanya dalam .cs
file?
Jawaban:
Jika shell Anda bash ≥4, menempatkan
shopt -s globstar
di Anda~/.bashrc
. Jika shell Anda zsh, Anda baik-baik saja. Maka Anda bisa lari**/*.cs
berarti semua file cocok*.cs
di direktori saat ini, atau di subdirektori, secara rekursif.Jika Anda tidak menjalankan shell yang mendukung
**
tetapi grep Anda mendukung--include
, Anda dapat melakukan grep rekursif dan memberi tahugrep
untuk hanya mempertimbangkan file yang cocok dengan pola tertentu. Perhatikan tanda kutip di sekitar pola nama file: itu ditafsirkan oleh grep, bukan oleh shell.Dengan hanya alat portabel (beberapa sistem tidak memiliki
grep -r
sama sekali), gunakanfind
untuk bagian traversal direktori, dangrep
untuk bagian pencarian teks.sumber
globstar
pilihan untuk saat ini Bash 4 + shell, gunakan:shopt -s globstar
.Anda harus memeriksa pengganti grep / find gril yang dikenal sebagai
ack
. Ini secara khusus diatur untuk mencari melalui direktori file kode sumber.Perintah Anda akan terlihat seperti ini:
sumber
Jika Anda menggunakan GNU
grep
, Anda dapat menentukan file mana yang akan dimasukkan dalam traversal direktori rekursif:(di mana periode terakhir menunjukkan direktori kerja saat ini sebagai root dari traversal)
sumber
Saya menggunakan kombinasi find dan grep:
Sebab
find
, Anda bisa mengganti.
dengan direktori dan menghapus-name
jika Anda ingin mencari di setiap file.Sebab
grep
,-bn
akan mencetak posisi dan nomor garis dan--color
akan membantu mata Anda dengan menyorot apa yang Anda cari.sumber