คำตอบ:
(ฉันยังเป็นแฟนของPowerGREPแต่ฉันจะไม่ใช้อีกต่อไป)
ฉันรู้ว่าคุณกล่าวแล้ว แต่ PowerGREP เป็นที่น่ากลัว
คุณสมบัติที่ฉันชอบบางประการคือ:
ตอนนี้ฉันรู้แล้วว่าเครื่องมือ grep อื่น ๆ สามารถทำทุกอย่างที่กล่าวมา เป็นเพียงแค่ PowerGREP ที่รวมเอาฟังก์ชั่นทั้งหมดไว้ใน GUI ที่ใช้งานง่ายมาก
จากกลุ่มคนที่ยอดเยี่ยมคนเดียวกันที่นำRegexBuddyมาให้คุณและฉันไม่มีส่วนเกี่ยวข้องใด ๆ (ควรสังเกตว่า RegexBuddy มี grep รุ่นพื้นฐาน (สำหรับ Windows) ด้วยตัวเองและมีค่าใช้จ่ายน้อยกว่า PowerGREP มาก)
FINDSTRนั้นทรงพลังพอสมควรรองรับนิพจน์ทั่วไปและมีข้อได้เปรียบในการใช้กับเครื่อง 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
ตัวอย่างการใช้งาน: findstr text_to_find *
หรือเพื่อค้นหาแบบเรียกซ้ำfindstr /s text_to_find *
GrepWinฟรีและโอเพนซอร์ส (GPL)
ฉันใช้ grepWin ซึ่งเขียนโดยหนึ่งในเต่าพวกหนึ่ง ทำงานบน Windows หรือไม่
อัปเดตกรกฎาคม 2556:
เครื่องมือ grep อีกอันที่ฉันใช้ตลอดเวลาบน Windows คือAstroGrep :
ความสามารถในการแสดงให้ฉันมากกว่าเพียงแค่การค้นหาบรรทัด (เช่น --context = NUM ของบรรทัดคำสั่ง grep) นั้นมีค่ายิ่ง
และมันก็รวดเร็ว เร็วมากแม้ในคอมพิวเตอร์เก่าที่ไม่มีไดรฟ์SSD (ฉันรู้ว่าพวกเขาเคยทำฮาร์ดไดรฟ์นี้กับดิสก์หมุนเรียกว่าplattersใช่ไหม?)
ว่าง.
มันเป็นแบบพกพา (zip zip ง่าย ๆ เพื่อ unzip)
คำตอบเดิมตุลาคม 2008
Gnu Grepไม่เป็นไร
คุณสามารถดาวน์โหลดได้ที่นี่: ( site ftp )
ตัวเลือกทั้งหมดตามปกติอยู่ที่นี่
เมื่อรวมกับgawkและxargs (รวมถึง 'find' จากGnuWin32 ) และคุณสามารถเขียนสคริปต์เหมือนที่คุณใช้กับ Unix ได้!
ดูตัวเลือกที่ฉันใช้เพื่อ grep ซ้ำ :
grep --include "*.xxx" -nRHI "my Text to grep" *
PowerShell ของ Select-String cmdlet นั้นดีใน v1.0 แต่ดีกว่าสำหรับ v2.0อย่างมาก การมี PowerShell ใน Windows รุ่นล่าสุดหมายความว่าทักษะของคุณที่นี่จะมีประโยชน์เสมอโดยไม่ต้องติดตั้งอะไรก่อน
เพิ่มพารามิเตอร์ใหม่ลงใน Select-String : Select-String cmdlet สนับสนุนพารามิเตอร์ใหม่เช่น:
- -Context: สิ่งนี้ช่วยให้คุณเห็นบรรทัดก่อนและหลังบรรทัดการจับคู่
- -AllMatches: ซึ่งช่วยให้คุณเห็นการแข่งขันทั้งหมดในบรรทัด (ก่อนหน้านี้คุณสามารถเห็นเฉพาะการแข่งขันครั้งแรกในบรรทัด)
- -NotMatch: เทียบเท่ากับ grep -vo
- -Encoding: เพื่อระบุการเข้ารหัสตัวอักษร
ฉันคิดว่ามันสมควรที่จะสร้างฟังก์ชันgcir
สำหรับการGet-ChildItem -Recurse .
มีกึ๋นที่จะผ่านพารามิเตอร์อย่างถูกต้องและนามแฝงสำหรับss
Select-String
ดังนั้นคุณเขียน:
gcir * .txt | ss foo
ls . *.txt -r| sls -ca "SomeString"
sls
สำหรับSelect-String
มันนานเกินไป?
มันอาจจะไม่ตรงตกอยู่ในประเภท 'grep' แต่ฉันไม่สามารถได้รับโดยใน Windows โดยไม่ต้องยูทิลิตี้ที่เรียกว่าAgentRansack มันเป็นยูทิลิตี้ "ค้นหาในไฟล์" ที่ใช้ gui พร้อมการสนับสนุน regex มันง่ายมากที่จะคลิกขวาที่โฟลเดอร์แล้วกด "ransack .. " แล้วค้นหาไฟล์ที่มีสิ่งที่คุณต้องการ เร็วมากเช่นกัน
เป็นเวลาสองสามปีแล้วที่คุณถามคำถามนี้ แต่ฉันขอแนะนำ AstroGrep ( http://astrogrep.sourceforge.net )
มันฟรีโอเพนซอร์สและมีอินเตอร์เฟซที่เรียบง่าย ฉันใช้มันเพื่อค้นหารหัสตลอดเวลา
PowerShell ได้รับการกล่าวถึงสองสามครั้ง นี่คือวิธีที่คุณใช้จริงในแบบ grepish:
Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"
มันจะค้นหาไฟล์ข้อความทั้งหมดซ้ำ ๆ ในแผนผังไดเรกทอรีปัจจุบันโดยคำนึงถึงขนาดตัวSomeString
พิมพ์
ยิ่งไปกว่านั้นให้เรียกใช้สิ่งนี้:
function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }
จากนั้นทำ:
pgrep SomeStringToSearch *.txt
จากนั้นให้ทำให้มันวิเศษมากเพิ่มชื่อแทนฟังก์ชั่นในโปรไฟล์ PowerShellของคุณและคุณเกือบจะสามารถทำให้ความเจ็บปวดของการไม่มีเครื่องมือบรรทัดคำสั่งที่เหมาะสม
Cygwin ประกอบด้วย grep เครื่องมือ GNU ทั้งหมดและสิ่ง Unix ทำงานได้ดีบน Windows หากคุณติดตั้ง Cygwin
Git บน Windows = grep ใน cmd.exe
ฉันเพิ่งค้นพบว่าการติดตั้งGitจะให้คำสั่ง Linux พื้นฐานแก่คุณ: cat, grep, scp และคำสั่งอื่น ๆ ที่ดี
ติดตั้งแล้วเพิ่มโฟลเดอร์ Git bin ลงใน PATH ของคุณจากนั้น cmd.exe ของคุณจะมีฟังก์ชันการทำงานพื้นฐานของ Linux!
dnGREPเป็นเครื่องมือ grep โอเพนซอร์สสำหรับ Windows รองรับฟีเจอร์เด็ด ๆ มากมายรวมถึง:
IMHO มันมีอินเตอร์เฟสที่ดีและสะอาดเหมือนกัน :)
ฉันมักจะใช้WinGREPแต่ฉันมีปัญหากับมันไม่ปล่อยไฟล์
ข้างๆพอร์ต Windows ของ grep GNU ที่:
http://gnuwin32.sourceforge.net/
นอกจากนี้ยังมี grep ของ Borland (คล้ายกับ GNU one) ที่มีอยู่ใน freeware คอมไพเลอร์ฟรี C ++ ของ Borland (เป็นฟรีแวร์ที่มีเครื่องมือบรรทัดคำสั่ง)
ฉันใช้อรรถประโยชน์ของ GNU สำหรับ Win32สำเร็จมาระยะหนึ่งแล้วและมันมี grep ที่ดีเช่นเดียวกับ tail และ gnu utils อื่น ๆ ที่มีประโยชน์สำหรับ win32 ฉันหลีกเลี่ยงเชลล์ที่ทำแพ็กเกจและใช้ไฟล์ที่เรียกทำงานได้ใน win32 command prompt
ส่วนท้ายที่ถูกบรรจุเป็นแอปพลิเคชั่นที่ค่อนข้างดีเช่นกัน
ฉันเป็นผู้แต่งAba Search and Replace เช่นเดียวกับ PowerGREP รองรับการแสดงผลปกติบันทึกรูปแบบสำหรับการใช้งานเพิ่มเติมยกเลิกการเปลี่ยนภาพตัวอย่างพร้อมเน้นไวยากรณ์สำหรับ HTML / CSS / JS / PHP การเข้ารหัสที่แตกต่างกันรวมถึง UTF-8 และ UTF-16
เมื่อเปรียบเทียบกับ PowerGREP GUI จะมีความยุ่งเหยิงน้อยลง Aba เริ่มค้นหาทันทีในขณะที่คุณพิมพ์รูปแบบ(การค้นหาที่เพิ่มขึ้น)เพื่อให้คุณสามารถทดลองกับนิพจน์ทั่วไปและเห็นผลทันที
คุณยินดีที่จะลองใช้เครื่องมือของฉัน ฉันยินดีที่จะตอบคำถามใด ๆ
ฉันต้องการเครื่องมือ grep ฟรีสำหรับ Windows ที่อนุญาตให้คุณคลิกขวาที่โฟลเดอร์และทำการค้นหา regex ของไฟล์ทุกไฟล์โดยไม่ต้องมีหน้าจอใด ๆ
ต่อไปนี้เป็นวิธีแก้ปัญหาอย่างรวดเร็วตามที่findstr
กล่าวถึงในโพสต์ก่อนหน้า
สร้างไฟล์ข้อความที่ใดที่หนึ่งบนฮาร์ดไดรฟ์ของคุณซึ่งเป็นเครื่องมือที่มีอายุการใช้งานยาวนาน เปลี่ยนชื่อเป็น. bat หรือ. cmd และวางต่อไปนี้:
@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"
จากนั้นเรียกดูโฟลเดอร์ SendTo ใน Windows 7 เรียกดู%APPDATA%\Microsoft\Windows\SendTo
และลากทางลัดของแบตช์ไฟล์ไปยังโฟลเดอร์ SendTo
ฉันเปลี่ยนชื่อทางลัดเป็น1 GREP
เก็บไว้ที่ด้านบนของรายการ SendTo
สิ่งที่ฉันต้องการจะทำต่อไปคือการส่งfindstr
ผ่านของสิ่งที่จะสร้างไฟล์ html เพื่อให้คุณสามารถคลิกที่แต่ละบรรทัดออกเพื่อเปิดไฟล์ นอกจากนี้ฉันไม่คิดว่ามันใช้งานได้กับทางลัดไปยังโฟลเดอร์ ฉันจะต้องตรวจสอบพารามิเตอร์และดูว่ามันมี ".lnk"
UnxUtilsเป็นสิ่งที่ฉันใช้ทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน ...
ฉันใช้ grep ของ Borland มาหลายปี แต่เพิ่งพบรูปแบบที่ไม่ตรงกัน Eeeks ไม่พบสิ่งอื่นในช่วงหลายปีที่ผ่านมา? ฉันเขียนการแทนที่ข้อความค้นหาแบบง่ายที่เรียกซ้ำเช่น grep - เป็น FS.EXE ที่แหล่งกำเนิด
grep ล้มเหลว ...
C:\DEV>GREP GAAPRNTR \SOURCE\TPALIB\*.PRG
<no results>
windows findstr ทำงานได้ ...
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]
เครื่องมือที่ฉันเลือกคือWindows Grepที่ตั้งชื่ออย่างเหมาะสม:
สตริงการเลือกของ PowerShell นั้นคล้ายคลึงกันไม่ใช่ตัวเลือกและความหมายเดียวกัน แต่ก็ยังทรงพลัง
หากคุณต้องการเครื่องมือ Windows Grep ที่ใช้งานง่ายฉันสร้างหนึ่งชื่อ P-Grep ที่ฉันได้ทำให้สามารถดาวน์โหลดได้ฟรีจากเว็บไซต์ของฉัน: www.adjutantit.com - เมนูหลักดาวน์โหลด
Windows Grep ดูเหมือนจะมีปัญหากับไฟล์จำนวนมากดังนั้นฉันจึงเขียนด้วยตัวเอง - ซึ่งน่าเชื่อถือกว่า คุณสามารถเลือกโฟลเดอร์คลิกขวาแล้วส่งไปที่ P-Grep โฟลเดอร์ sendto ไม่ได้รับการปรับปรุงในระหว่างการติดตั้ง
ฉันใช้AJC Grepทุกวันเป็นเวลาหลายปี ข้อ จำกัด ที่สำคัญเพียงประการเดียวที่ฉันพบคือพา ธ ของไฟล์จะถูก จำกัด ที่ 255 อักขระและจะหยุดเมื่อพบหนึ่งแทนที่จะเป็นแค่การออกคำเตือน มันน่ารำคาญ แต่ก็ไม่ค่อยเกิดขึ้นบ่อยนัก
ฉันใช้กับ Windows 7 Ultimate 64 บิตดังนั้นข้อมูลประจำตัว 64 บิตนั้นใช้ได้
ฉันใช้มันตลอดไปและโชคดีที่มันยังคงมีอยู่ มันเร็วและเล็กมาก
หากไม่มีคำตอบใด ๆ ที่เป็นสิ่งที่คุณกำลังมองหาบางทีคุณอาจจะเขียน wrapper ไปที่ FindStr ที่คุณต้องการ
FindStr ค่อนข้างดีอยู่แล้วดังนั้นจึงควรทำให้ GUI ขึ้นมา (ถ้าคุณต้องการ) และให้คุณสมบัติพิเศษบางอย่าง (เช่นการรวมกับ Find เพื่อค้นหาจำนวนไฟล์ที่มีสตริงที่ระบุ [ดังกล่าวข้างต้น])
แน่นอนว่าคุณมีความต้องการเวลาและความชอบในการทำเช่นนี้!
ฉันได้ติดตั้งCygwinไว้ในเครื่องของฉันและวาง Cygwin bin ไว้ในพา ธ ด้านสิ่งแวดล้อมของฉันดังนั้น Cygwin grep จึงทำงานเหมือนปกติในบรรทัดคำสั่ง