Jawaban:
(Saya masih penggemar PowerGREP , tapi saya tidak menggunakannya lagi.)
Saya tahu Anda sudah menyebutkannya, tetapi PowerGREP luar biasa .
Beberapa fitur favorit saya adalah:
Sekarang saya menyadari bahwa alat grep lainnya dapat melakukan semua hal di atas. Hanya saja PowerGREP mengemas semua fungsi menjadi GUI yang sangat mudah digunakan.
Dari orang-orang luar biasa yang sama yang membawakan Anda RegexBuddy dan yang saya tidak punya afiliasi selain mencintai barang-barang mereka. (Perlu dicatat bahwa RegexBuddy menyertakan versi dasar grep (untuk Windows) itu sendiri dan harganya jauh lebih murah daripada PowerGREP.)
FINDSTR cukup kuat, mendukung ekspresi reguler dan memiliki keunggulan karena sudah ada di semua mesin Windows.
c:\> FindStr /?
Searches for strings in files.
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ ...]]
/B Matches pattern if at the beginning of a line.
/E Matches pattern if at the end of a line.
/L Uses search strings literally.
/R Uses search strings as regular expressions.
/S Searches for matching files in the current directory and all
subdirectories.
/I Specifies that the search is not to be case-sensitive.
/X Prints lines that match exactly.
/V Prints only lines that do not contain a match.
/N Prints the line number before each line that matches.
/M Prints only the filename if a file contains a match.
/O Prints character offset before each matching line.
/P Skip files with non-printable characters.
/OFF[LINE] Do not skip files with offline attribute set.
/A:attr Specifies color attribute with two hex digits. See "color /?"
/F:file Reads file list from the specified file(/ stands for console).
/C:string Uses specified string as a literal search string.
/G:file Gets search strings from the specified file(/ stands for console).
/D:dir Search a semicolon delimited list of directories
strings Text to be searched for.
[drive:][path]filename
Specifies a file or files to search.
Use spaces to separate multiple search strings unless the argument is prefixed
with /C. For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y. 'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.
Regular expression quick reference:
. Wildcard: any character
* Repeat: zero or more occurances of previous character or class
^ Line position: beginning of line
$ Line position: end of line
[class] Character class: any one character in set
[^class] Inverse class: any one character not in set
[x-y] Range: any characters within the specified range
\x Escape: literal use of metacharacter x
\<xyz Word position: beginning of word
xyz\> Word position: end of word
Contoh penggunaan: findstr text_to_find *
atau untuk mencari secara rekursiffindstr /s text_to_find *
GrepWin Gratis dan sumber terbuka (GPL)
Saya telah menggunakan grepWin yang ditulis oleh salah satu orang tortoisesvn. Apakah pekerjaan di Windows ...
Pembaruan Juli 2013:
Alat grep lain yang sekarang saya gunakan sepanjang waktu di Windows adalah AstroGrep :
Kemampuannya untuk menunjukkan kepada saya lebih dari sekedar pencarian baris (yaitu --context = NUM dari grep baris-perintah) sangat berharga.
Dan itu cepat. Sangat cepat, bahkan pada komputer lama dengan drive non- SSD (saya tahu, mereka biasa melakukan hard drive ini dengan disk berputar , disebut piring - piring , gila kan?)
Ini gratis.
Ini portabel (arsip zip sederhana untuk unzip).
Jawaban asli Oktober 2008
Gnu Grep baik-baik saja
Anda dapat mengunduhnya misalnya di sini: ( situs ftp )
Semua opsi yang biasa ada di sini.
Itu, dikombinasikan dengan gawk dan xargs (termasuk 'find', dari GnuWin32 ), dan Anda dapat benar-benar skrip seperti Anda berada di Unix!
Lihat juga opsi yang saya gunakan untuk melakukan grep secara rekursif :
grep --include "*.xxx" -nRHI "my Text to grep" *
Pilih-String cmdlet PowerShell baik-baik saja di v1.0, tetapi secara signifikan lebih baik untuk v2.0 . Memiliki PowerShell bawaan ke versi Windows terbaru berarti keterampilan Anda di sini akan selalu berguna, tanpa terlebih dahulu menginstal sesuatu.
Parameter baru ditambahkan ke Select-String : Select-String cmdlet sekarang mendukung parameter baru, seperti:
- -Konteks: Ini memungkinkan Anda melihat garis sebelum dan sesudah garis pertandingan
- -AllMatches: yang memungkinkan Anda melihat semua pertandingan dalam satu baris (Sebelumnya, Anda hanya bisa melihat pertandingan pertama dalam satu baris)
- -NotMatch: Setara dengan grep -vo
- -Encoding: untuk menentukan pengkodean karakter
Saya merasa perlu untuk membuat fungsi gcir
untuk Get-ChildItem -Recurse .
, dengan kecerdasan untuk melewati parameter dengan benar, dan alias ss
untuk Select-String
. Jadi, Anda menulis:
gcir * .txt | ss foo
ls . *.txt -r| sls -ca "SomeString"
sls
untuk Select-String
benar-benar terlalu lama?
Ini mungkin tidak persis jatuh ke dalam kategori 'grep', tapi saya tidak bisa bertahan di Windows tanpa utilitas yang disebut AgentRansack . Ini adalah utilitas "find in files" berbasis gui dengan dukungan regex. Sangat mudah untuk mengklik kanan pada folder, tekan "ransack .." dan temukan file yang mengandung apa yang Anda cari. Sangat cepat juga.
Sudah beberapa tahun sejak Anda mengajukan pertanyaan, tetapi saya akan merekomendasikan AstroGrep ( http://astrogrep.sourceforge.net ).
Ini gratis, open source, dan memiliki antarmuka yang sederhana. Saya menggunakannya untuk mencari kode setiap saat.
PowerShell telah disebutkan beberapa kali. Inilah cara Anda akan menggunakannya dengan benar:
Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"
Itu secara rekursif mencari semua file teks di pohon direktori saat ini SomeString
dengan sensitivitas kasus.
Lebih baik lagi, jalankan ini:
function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }
Kemudian lakukan:
pgrep SomeStringToSearch *.txt
Kemudian untuk benar-benar membuatnya ajaib, tambahkan fungsi alias ke Profil PowerShell Anda dan Anda hampir dapat menghilangkan rasa sakit karena tidak memiliki alat baris perintah yang tepat.
Cygwin termasuk grep. Semua alat GNU dan hal-hal Unix berfungsi dengan baik di Windows jika Anda menginstal Cygwin.
Git di Windows = grep di cmd.exe
Saya baru tahu menginstal Git akan memberi Anda beberapa perintah Linux dasar: cat, grep, scp dan semua yang bagus lainnya.
Instal lalu tambahkan folder Git bin ke PATH Anda dan kemudian cmd.exe Anda memiliki fungsi Linux dasar!
dnGREP adalah alat grep open source untuk Windows. Ini mendukung sejumlah fitur keren termasuk:
IMHO, ia memiliki antarmuka yang bagus dan bersih juga :)
Saya selalu menggunakan WinGREP , tapi saya punya masalah dengan itu tidak melepaskan file.
Nah, di samping port Windows dari GNU grep di:
http://gnuwin32.sourceforge.net/
ada juga grep Borland (sangat mirip dengan GNU satu) tersedia di Free C ++ Compiler Borland freeware (ini freeware dengan alat-alat baris perintah).
Saya telah berhasil menggunakan utilitas GNU untuk Win32 untuk beberapa waktu dan memiliki grep yang baik serta ekor dan utilitas gnu berguna lainnya untuk win32. Saya menghindari shell yang dikemas dan cukup menggunakan executables tepat di command prompt win32.
Ekor yang dikemas adalah aplikasi kecil yang cukup bagus juga.
Saya penulis Aba Search and Replace. Sama seperti PowerGREP, ia mendukung ekspresi reguler, menyimpan pola untuk penggunaan lebih lanjut, membatalkan untuk penggantian, pratinjau dengan highlight sintaks untuk HTML / CSS / JS / PHP, pengkodean yang berbeda, termasuk UTF-8 dan UTF-16.
Dibandingkan dengan PowerGREP, GUI kurang berantakan. Aba langsung mulai mencari saat Anda mengetikkan pola (pencarian tambahan), sehingga Anda dapat bereksperimen dengan ekspresi reguler dan segera melihat hasilnya.
Anda disambut untuk mencoba alat saya; Saya akan dengan senang hati menjawab pertanyaan.
Saya ingin alat grep gratis untuk Windows yang memungkinkan Anda untuk mengklik kanan pada folder dan melakukan pencarian regex setiap file - tanpa layar cerewet.
Berikut ini adalah solusi cepat berdasarkan yang findstr
disebutkan dalam posting sebelumnya.
Buat file teks di suatu tempat di hard drive Anda tempat Anda menyimpan alat berumur panjang. Ganti nama menjadi .bat atau .cmd dan rekatkan yang berikut ke dalamnya:
@echo off
set /p term="Search term> "
del %temp%\grepresult.txt
findstr /i /S /R /n /C:"%term%" "%~1\*.*" > "%temp%\grepresult.txt"
start notepad "%temp%\grepresult.txt"
Kemudian browse ke folder SendTo. Pada Windows 7, jelajahi %APPDATA%\Microsoft\Windows\SendTo
dan seret pintasan file batch ke folder SendTo itu.
Saya mengganti nama pintasan agar 1 GREP
tetap di atas daftar SendTo.
Hal-hal yang ingin saya lakukan selanjutnya adalah mem-pipe output findstr
melalui sesuatu yang akan menghasilkan file html sehingga Anda bisa mengklik pada setiap baris output untuk membuka file itu. Juga, saya tidak berpikir itu berfungsi dengan cara pintas ke folder. Saya harus memeriksa parameter dan melihat apakah mengandung ".lnk".
Saya menggunakan grep Borland selama bertahun-tahun tetapi hanya menemukan pola yang tidak cocok. Eeeks. Apa lagi yang belum ditemukan selama bertahun-tahun? Saya menulis pengganti pencarian teks sederhana yang melakukan rekursi seperti grep - ini FS.EXE pada source forge.
grep gagal ...
C:\DEV>GREP GAAPRNTR \SOURCE\TPALIB\*.PRG
<no results>
windows findstr berfungsi ...
C:\DEV>FINDSTR GAAPRNTR \SOURCE\TPALIB\*.PRG
\SOURCE\TPALIB\TPGAAUPD.PRG:ffSPOOL(cRPTFILE, MEM->GAAPRNTR, MEM->NETTYPE)
\SOURCE\TPALIB\TPPRINTR.PRG: AADD(mPRINTER, TPACONFG->GAAPRNTR)
\SOURCE\TPALIB\TPPRINTR.PRG: IF TRIM(TPACONFG->GAAPRNTR) <> TRIM(mPRINTER[2])
\SOURCE\TPALIB\TPPRINTR.PRG: REPLACE TPACONFG->GAAPRNTR WITH mPRINTER[2]
Alat pilihan saya adalah Windows Grep yang dinamai dengan tepat :
Pilih-string PowerShell mirip, itu bukan opsi dan semantik yang sama, tetapi masih kuat.
Jika Anda ingin alat Windows Grep yang mudah digunakan, saya membuat yang disebut P-Grep yang telah saya unduh secara gratis dari situs web saya: www.adjutantit.com - menu beranda, unduhan.
Windows Grep tampaknya memiliki masalah dengan sejumlah besar file, jadi saya menulis sendiri - yang tampaknya lebih dapat diandalkan. Anda dapat memilih folder, klik kanan dan kirim ke P-Grep. Folder sendto tidak akan dihapus saat instalasi.
Saya telah menggunakan AJC Grep setiap hari selama bertahun-tahun. Satu-satunya batasan utama yang saya temukan adalah jalur file dibatasi hingga 255 karakter dan berhenti ketika bertemu satu, bukan hanya mengeluarkan peringatan. Ini menjengkelkan tetapi tidak sering terjadi.
Saya menggunakannya pada Windows 7 Ultimate 64-bit, jadi kredensial 64-bitnya baik-baik saja.
Saya sudah menggunakannya selamanya dan untungnya masih tersedia. Ini sangat cepat dan sangat kecil.
Jika tidak ada solusi yang sesuai dengan yang Anda cari, mungkin Anda bisa menulis pembungkus untuk FindStr yang melakukan persis seperti yang Anda butuhkan?
FindStr cukup bagus, jadi seharusnya hanya mengetuk GUI (jika Anda menginginkannya) dan menyediakan beberapa fitur tambahan (seperti menggabungkannya dengan Find untuk menemukan jumlah file yang berisi string tertentu [disebutkan di atas]).
Ini, tentu saja, mengasumsikan Anda memiliki persyaratan, waktu, dan kecenderungan untuk melakukan ini!
Saya telah menginstal Cygwin di mesin saya dan meletakkan direktori Cygwin bin di jalur lingkungan saya, sehingga grg Cygwin berfungsi seperti biasa di baris perintah yang menyelesaikan semua kebutuhan skrip saya untuk grep saat ini.