Rumah >Tutorial sistem >LINUX >Cara mencari fail yang mengandungi teks tertentu menggunakan grep dan ripgrep di linux

Cara mencari fail yang mengandungi teks tertentu menggunakan grep dan ripgrep di linux

Jennifer Aniston
Jennifer Anistonasal
2025-03-17 09:07:20751semak imbas

Cara mencari fail yang mengandungi teks tertentu menggunakan grep dan ripgrep di linux

Perintah grep dan ripgrep dalam sistem Linux adalah alat carian mod teks yang kuat yang menyediakan pelbagai pilihan untuk menyempurnakan carian dan meningkatkan kecekapan. Panduan ini akan terperinci bagaimana menggunakan kedua -dua arahan ini untuk mencari fail yang mengandungi rentetan teks tertentu dalam kandungan fail.

Jadual Kandungan

    1. Penggunaan asas
    1. Mengandungi jenis fail tertentu
    1. Tidak termasuk jenis fail tertentu
    1. Tidak termasuk direktori tertentu
    1. Tunjukkan hanya nama fail
    1. Perlawanan terbalik
    1. Statistik perlawanan
  • Contoh
  • Cari mod teks dalam fail linux menggunakan ripgrep
    • Penggunaan asas
      • Parameter biasa
      • Contoh
  • Soalan Lazim: Gunakan grep dan ripgrep untuk mencari teks dalam fail
      1. Bagaimana cara menggunakan grep untuk mencari semua fail yang kandungannya mengandungi rentetan teks tertentu?
      1. Bagaimana untuk memasukkan atau mengecualikan jenis fail tertentu dalam carian grep saya?
      1. Bagaimana cara mengecualikan direktori tertentu dari carian grep saya?
      1. Bagaimana untuk memaparkan hanya nama fail yang mengandungi rentetan tertentu?
      1. Apa itu ripgrep dan mengapa saya harus menggunakannya?
      1. Bagaimana untuk melakukan carian asas menggunakan ripgrep ?
      1. Apakah parameter ripgrep yang biasa digunakan?
      1. Bolehkah anda memberikan contoh ripgrep menggunakan pilihan yang berbeza?
  • Meringkaskan

Gunakan grep untuk mencari fail yang mengandungi rentetan teks tertentu

grep (Global Regular Expression Print) adalah utiliti baris arahan yang mencari corak dalam fail dan cetakan garis yang sepadan. Ia adalah alat pemprosesan teks yang kuat yang digunakan secara meluas dalam sistem operasi seperti Unix, termasuk Linux.

grep menyokong ekspresi biasa, yang membolehkannya melakukan fleksibel melakukan pencocokan corak yang kompleks. Untuk maklumat lanjut mengenai penggunaan arahan grep , lihat panduan berikut:

  • Tutorial dan Contoh Perintah grep (pemula)

Sekarang mari kita bincangkan cara menggunakan perintah grep untuk mencari fail yang mengandungi perkataan atau frasa tertentu di Linux.

1. Penggunaan Asas

Untuk mencari rekursif untuk corak teks tertentu (termasuk pautan simbolik) dan paparkan nombor baris yang sesuai dengan corak, gunakan arahan berikut:

 <code>grep -Rnw '/path/to/directory/' -e 'pattern'</code>
  • -R : Melakukan carian rekursif, termasuk pautan simbolik.
  • -n : Tunjukkan nombor baris yang sepadan.
  • -w : Padankan keseluruhan perkataan sahaja.
  • -e : Tentukan corak untuk mencari.

Ganti /path/to/directory/ dengan direktori yang anda cari dan 'pattern' dengan corak teks yang anda cari.

2. Sertakan jenis fail tertentu

Untuk mencari fail dengan sambungan tertentu, seperti fail .txt dan .md , gunakan pilihan --include :

 <code>grep --include=\*.{txt,md} -Rnw '/path/to/directory/' -e 'pattern'</code>

3. Tidak termasuk jenis fail tertentu

Untuk mengecualikan fail dengan sambungan tertentu, seperti fail .bak dan .tmp , gunakan pilihan --exclude :

 <code>grep --exclude=\*.{bak,tmp} -Rnw '/path/to/directory/' -e 'pattern'</code>

4. Tidak termasuk direktori tertentu

Untuk mengecualikan direktori tertentu dari carian, seperti node_modules , .git , dan direktori bermula dengan temp_ , gunakan pilihan --exclude-dir :

 <code>grep --exclude-dir={node_modules,.git,temp_*} -Rnw '/path/to/directory/' -e 'pattern'</code>

5. Hanya memaparkan nama fail

Untuk memaparkan hanya nama fail yang mengandungi corak (disusun abjad), gunakan pilihan -l dan gabungkan dengan sort :

 <code>grep -Rlnw '/path/to/directory/' -e 'pattern' | sort</code>

6. Perlawanan terbalik

Untuk memaparkan baris yang tidak sepadan dengan corak, gunakan pilihan -v :

 <code>grep -Rnwv '/path/to/directory/' -e 'pattern'</code>

7. Statistik Bilangan Perlawanan

Untuk memaparkan bilangan baris yang sepadan untuk setiap fail, gunakan pilihan -c :

 <code>grep -Rnwc '/path/to/directory/' -e 'pattern'</code>

Contoh-contoh ini menunjukkan pilihan lanjutan lain untuk carian teks penalaan yang baik menggunakan grep pada Linux.

Contoh

Beberapa arahan berikut harus dijalankan dengan kebenaran sudo atau akar.

1. Cari rentetan "kata laluan" rentetan dalam semua fail dalam direktori semasa:

 <code>grep -Rnw '.' -e 'password'</code>

2. Cari "Pengguna" dalam direktori /etc secara tidak sensitif:

 <code>grep -Rinw '/etc' -e 'user'</code>

3. Cari perkataan "Utama" dalam direktori /home/user/projects :

 <code>grep -Rnw '/home/user/projects' -e 'main'</code>

4. Cari "Todo" dalam semua .py fail dalam direktori semasa:

 <code>grep --include=\*.py -Rnw '.' -e 'TODO'</code>

5. Cari "sulit" dalam direktori /var/logs , dan tidak termasuk fail .log :

 <code>grep --exclude=\*.log -Rnw '/var/logs' -e 'confidential'</code>

6. Cari "ralat" dalam direktori /var/log dan paparkan hanya nama fail:

 <code>grep -Rlnw '/var/log' -e 'error'</code>

7. Cari "gagal" dalam fail termampat (contohnya backup.zip ):

 <code>zgrep -i 'fail' backup.zip</code>

8. Statistik Bilangan baris yang mengandungi perkataan "ralat" dalam direktori /var/log :

 <code>grep -Rnwc '/var/log' -e 'error'</code>

Perintah dan pilihan ini harus meliputi kebanyakan keperluan carian teks dalam persekitaran Linux.

Cari mod teks dalam fail linux menggunakan ripgrep

ripgrep ( rg ) adalah alternatif moden kepada grep , yang direka untuk menjadi lebih cepat dan lebih mesra pengguna, terutamanya ketika mencari pangkalan kod besar atau fail besar.

Ia ditulis dalam karat dan menggunakan teknologi yang cekap seperti pengoptimuman teks automaton, SIMD dan agresif yang terhad, menjadikannya lebih cepat daripada alat carian lain.

ripgrep juga menyediakan output yang lebih intuitif dan berwarna -warni secara lalai, dan ia mempunyai set pilihan yang kaya untuk menyesuaikan tingkah laku carian.

Penggunaan asas

Untuk mencari rentetan "fungsi" dalam direktori semasa:

 <code>rg "search_string" .</code>

Parameter biasa

  • -i : Melakukan carian kes-insensitif.
  • -I : Abaikan fail binari.
  • -w : Cari hanya seluruh perkataan.
  • -n : Tunjukkan nombor baris yang sepadan.
  • -C--context :显示匹配行周围的上下文(例如, -C3显示匹配项之前和之后3行)。
  • --color=auto : Sorot teks yang sepadan.
  • -H : Menunjukkan nama fail teks yang dijumpai.
  • -c : Menunjukkan kiraan baris yang sepadan (boleh digabungkan dengan -H ).

Contoh

1. Cari "ralat" dalam /var/log/ direktori secara tidak sensitif:

 <code>rg -i "error" /var/log/</code>

2. Cari keseluruhan perkataan "pangkalan data" dalam direktori /home/user/config :

 <code>rg -w "database" /home/user/config</code>

3. Paparkan nombor garis dan konteks sekitar rentetan "Inisialisasi" dalam direktori semasa (sebelum dan selepas 3 baris):

 <code>rg -n -C3 "initialize" .</code>

4. Cari rentetan "Diluluskan" dalam semua fail dalam direktori /var/www/html , abaikan fail binari dan sorot perlawanan:

 <code>rg -I --color=auto "deprecated" /var/www/html</code>

5. Paparkan bilangan baris yang sepadan dengan nama fail dan "berjaya" dalam direktori /opt/data :

 <code>rg -H -c "successful" /opt/data</code>

6. Cari "user_id", sambil mengabaikan fail binari dan memaparkan nama fail dalam direktori /etc :

 <code>rg -I -H "user_id" /etc</code>

7. Cari rentetan "sambungan" dan paparkan nama fail dan nombor talian di direktori /home/user/logs :

 <code>rg -H -n "connection" /home/user/logs</code>

Contoh -contoh ini menunjukkan kepelbagaian dan kuasa ripgrep dalam pelbagai senario carian, terutama dalam projek besar dan fail besar.

Soalan Lazim: Gunakan grep dan ripgrep untuk mencari teks dalam fail

1. Bagaimana menggunakan grep untuk mencari semua fail yang kandungannya mengandungi rentetan teks tertentu?

Untuk mencari rentetan tertentu dalam semua fail dalam direktori dan subdirektori, gunakan arahan berikut:

 <code>grep -Rnw '/path/to/dir/' -e 'pattern'</code>
  • -R : Melakukan carian rekursif, termasuk pautan simbolik.
  • -n : Tunjukkan nombor baris yang sepadan.
  • -w : Padankan keseluruhan perkataan sahaja.
  • -e : Tentukan corak untuk mencari.

2. Bagaimana untuk memasukkan atau mengecualikan jenis fail tertentu dalam carian grep saya?

Untuk memasukkan jenis fail tertentu:

 <code>grep --include=\*.{sh,py} -Rnw '/path/to/dir/' -e 'pattern'</code>

Untuk mengecualikan jenis fail tertentu:

 <code>grep --exclude=\*.tmp -Rnw '/path/to/dir/' -e 'pattern'</code>

3. Bagaimana untuk mengecualikan direktori tertentu dari carian grep saya?

Untuk mengecualikan direktori tertentu:

 <code>grep --exclude-dir={node_modules,dist,logs} -Rnw '/path/to/dir/' -e 'pattern'</code>

4. Bagaimana untuk memaparkan hanya nama fail yang mengandungi rentetan tertentu?

Gunakan pilihan -l untuk memaparkan hanya nama fail yang sepadan:

 <code>grep -Rlnw '/path/to/documents/' -e 'confidential'</code>

5. Apa itu ripgrep dan mengapa saya harus menggunakannya?

ripgrep ( rg ) adalah alternatif yang lebih cepat dan lebih cekap untuk grep , terutamanya dalam projek besar dan fail besar. Ia berdasarkan enjin ekspresi biasa Rust, yang menggunakan pengoptimuman teks yang terhad, SIMD dan agresif untuk meningkatkan kelajuan carian.

6. Bagaimana untuk melakukan carian asas menggunakan ripgrep ?

Untuk mencari rentetan dalam semua fail dalam direktori semasa, gunakan:

 <code>rg "pattern" .</code>

7. Apakah parameter ripgrep yang biasa digunakan?

  • -i : Melakukan carian kes-insensitif.
  • -I : Abaikan fail binari.
  • -w : Cari hanya seluruh perkataan.
  • -n : Tunjukkan nombor baris yang sepadan.
  • -C atau --context : menunjukkan konteks di sekitar baris yang sepadan (contohnya, -C3 menunjukkan 3 baris sebelum dan selepas perlawanan).
  • --color=auto : Sorot teks yang sepadan.
  • -H : Menunjukkan nama fail teks yang dijumpai.
  • -c : Menunjukkan kiraan baris yang sepadan (boleh digabungkan dengan -H ).

8. Bolehkah anda memberikan contoh ripgrep menggunakan pilihan yang berbeza?

  • Cari "Sesi" dalam direktori /var/logs secara tidak sensitif:
 <code>rg -i "session" /var/logs</code>
  • Cari keseluruhan perkataan "config" dalam direktori /etc :
 <code>rg -w "config" /etc</code>
  • Tunjukkan nombor garis dan konteks sekitar rentetan "Inisialisasi" dalam direktori /src (sebelum dan selepas 4 baris):
 <code>rg -n -C4 "initialize" /src</code>
  • Cari rentetan "Dihapus" dalam semua fail dalam direktori /usr/share , abaikan binari dan sorot perlawanan:
 <code>rg -I --color=auto "deprecated" /usr/share</code>
  • Paparkan bilangan baris yang sepadan dengan nama fail dan "kejayaan" dalam direktori /opt/logs :
 <code>rg -H -c "success" /opt/logs</code>
  • Cari "nama pengguna", sambil mengabaikan fail binari dan memaparkan nama fail di direktori /home/user/settings :
 <code>rg -I -H "username" /home/user/settings</code>
  • Cari rentetan "import" dan paparkan nama fail dan nombor baris dalam direktori /projects :
 <code>rg -H -n "import" /projects</code>

Meringkaskan

Dalam tutorial ini, kami membincangkan cara menggunakan arahan grep dan ripgrep untuk mencari fail yang mengandungi rentetan teks tertentu.

Walaupun grep adalah alat yang komprehensif dan serba boleh, ripgrep ( rg ) menyediakan prestasi yang lebih baik dan pengalaman pengguna yang lebih moden, menjadikannya pilihan yang popular untuk carian teks, terutamanya dalam projek besar atau ketika bekerja dengan fail besar.


Bacaan Berkaitan :

  • Cara mencari dan memadam fail dengan teks tertentu dalam nama fail di linux

Atas ialah kandungan terperinci Cara mencari fail yang mengandungi teks tertentu menggunakan grep dan ripgrep di linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn