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.
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.
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"
Jawaban:
Cara termudah adalah dengan menggunakan fitur GNU grep:
Jika Anda pernah menggunakan varian unix lain yang tidak memiliki GNU grep, berikut adalah cara yang portabel:
sumber
grep -r teststring .
menggunakan ack Anda cukup mengetik:
cd /home/user01 && ack --java teststring
sumber
ack --java teststring /home/user01
Untuk ack ini alias ack-grep , ini adalah aplikasi pembunuh di pikiran saya;)
Anda dapat
ack some_string /in/path_y
menemukan some_string di path_y Atau lebih mudahack some_other_string
untuk menemukan some_other_sting di dir saat ini.sumber
Menemukannya. Mempostingnya karena dapat membantu seseorang.
Harap perbaiki jika ada cara yang lebih baik.
sumber
-print0
dan-0
ketika perpipaanfind
kexargs
berfungsi dengan baik dengan file yang mungkin memiliki spasi atau baris baru dalam namanya:find /home/user01 -name *.java -print0 | xargs -0 grep "teststring"
sumber