Cari pola teks di linux


20

Saya seorang pemula linux. Saya perlu mencari string "teststring" di semua file * .java yang berada di bawah / home / user1 / (termasuk subfolder). Bagaimana saya bisa melakukannya di linux melalui perintah shell.


Ada beberapa pertanyaan tentang regex mencari file di subdirektori dari command-line
RobotHumans

pencarian cepat muncul pertanyaan ini: superuser.com/questions/208271/… tidak persis apa yang Anda cari, tetapi alih-alih eksekutif cp Anda bisa
melecehkan

Saya dapat membuat daftar file dengan ekstensi dengan find / home / user1 -name * .java Bagaimana cara menggunakan grep?
darthvader

Jawaban:


23

Cara termudah adalah dengan menggunakan fitur GNU grep:

grep -r --include '*.java' teststring /home/user1

Jika Anda pernah menggunakan varian unix lain yang tidak memiliki GNU grep, berikut adalah cara yang portabel:

find /home/user1 -name '*.java' -exec grep teststring {} +

bagus tidak tahu tentang fitur grep ini
RobotHumans

1
Jika Anda sedang mencari dir dan semua file saat inigrep -r teststring .
Chris Moschini

4

menggunakan ack Anda cukup mengetik:cd /home/user01 && ack --java teststring


1
atauack --java teststring /home/user01
Andy Lester

4

Untuk ack ini alias ack-grep , ini adalah aplikasi pembunuh di pikiran saya;)

Anda dapat ack some_string /in/path_ymenemukan some_string di path_y Atau lebih mudah ack some_other_stringuntuk menemukan some_other_sting di dir saat ini.


2

Menemukannya. Mempostingnya karena dapat membantu seseorang.

find /home/user01 -name *.java | xargs grep "teststring"

Harap perbaiki jika ada cara yang lebih baik.


3
Secara umum, Anda harus menggunakan -print0dan -0ketika perpipaanfind ke xargsberfungsi dengan baik dengan file yang mungkin memiliki spasi atau baris baru dalam namanya:find /home/user01 -name *.java -print0 | xargs -0 grep "teststring"
Dijeda sampai pemberitahuan lebih lanjut.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.