Saya punya direktori besar di komputer saya dan saya perlu mencari di setiap file ruby untuk mencari string.
Saya bisa melakukannya seperti ini: grep -R "string" *.rb
tetapi butuh waktu sangat lama dan saya ingin menggunakan pv (penampil pipa) untuk menunjukkan progress bar untuk dapat memantau grep
kemajuan.
Tetapi saya tidak benar-benar tahu bagaimana saya bisa menulis perintah ini karena masih ada beberapa hal yang saya tidak mengerti tentang perintah ini.
Adakah yang punya ide?
Dua metode lagi:
Atau, di shell yang berbeda saat perintah asli Anda sedang berjalan, cari pid dari perintah grep dan kemudian:
Kedua hal di atas akan menunjukkan file grep yang sedang Anda kerjakan. Anda dapat menemukan jumlah total file dengan:
Terakhir, gunakan ini untuk mencari tahu nomor mana file saat ini dalam daftar:
PS Jawaban saya berasumsi bahwa semua file Anda berada dalam satu direktori. Jika mereka tidak, Anda akan harus menggunakan
find
bukannyals
dan*.rb
sebagai thinice disarankan.sumber
Saya tidak yakin OS apa yang Anda gunakan, tetapi
grep -R "string" *.ext
mungkin tidak berfungsi dengan benar untuk Anda.Anda mungkin lebih baik dilayani menggunakan
find
bersamagrep
:find . -type f -name "*.rb" -print0 |xargs --null grep "string"
sumber
Dalam versi terbaru
pv
ada"-d"
-Opsi untuk menonton semua FD dari proses lain.Jadi secara teori
pv
tidak hanya akan berfungsi sebagai pipa tetapi juga sebagai indikator kemajuan untuk keseluruhan proses. (Misalnya, coba dengan PID Firefox Anda)Untuk Masalah di atas, ide yang lebih sederhana adalah sebagai berikut: Saat
grep
sedang berjalan, gunakanlsof
bersama-sama denganwatch
.Dengan begitu Anda bisa memantau perkembangan grep Anda.
sumber
Sudahkah Anda mencoba
Saya tidak tahu apakah ini benar-benar berfungsi karena tidak tahu berapa banyak bit total data yang harus dicari karena bersifat rekursif?
sumber
pv
akan beroperasi pada output grep (jadi bahkan jika ia menentukan ukuran input penuhpv
hanya melihat output keluar dari ujung pipa - Ini akan menjadi jalan di bawah -menghitung byteSaya biasanya menggunakan sistem proc-files pada sistem Linux, yaitu
ls -al /proc/<pid of grep>/fd
Ini mencantumkan semua file yang telah dibuka grep-invocation saat ini dan dengan demikian memberikan kesan di mana dalam pencarian itu saat ini.
sumber