วิธีที่เร็วที่สุด (แม่นยำ) ในการค้นหาสตริงข้อความในไฟล์บนเครื่อง windows คืออะไร


9

ตามที่ชื่อแนะนำสิ่งที่เป็นวิธีที่เร็วที่สุด (แม่นยำ) ในการค้นหาว่าไฟล์ใดที่ตรงกับสตริงเฉพาะ

โดยเฉพาะฉันกำลังค้นหา.cppและ.hไฟล์


คำตอบ:


11

Notepad ++ มีตัวเลือก 'ค้นหาในไฟล์' ซึ่งอยู่ในเมนู 'ค้นหา' ซึ่งจะทำให้คุณสามารถค้นหาไฟล์หลายไฟล์ในโฟลเดอร์ (คุณสามารถระบุโฟลเดอร์) และจะแสดงหมายเลขบรรทัดของแต่ละไฟล์เช่นกัน . คุณสามารถสลับได้ว่าจะรวมโฟลเดอร์ย่อยและโฟลเดอร์ที่ซ่อนอยู่ในการค้นหาหรือไม่และยังช่วยให้คุณค้นหาด้วย \ t \ n ฯลฯ และค้นหาด้วยนิพจน์ทั่วไปหากคุณต้องการ

Notepad ++ เป็นตัวแก้ไขโปรแกรมเมอร์ของ Windows (ไม่ใช่ IDE) และเป็น Open Source ด้วย

(ฉันรู้ว่าคุณเคยได้ยินแผ่นจดบันทึก ++ มากที่สุด แต่ฉันเพิ่งพูดถึงที่นี่เพื่อเป็นตัวเลือกในกรณีที่คุณไม่ทราบคุณลักษณะนี้โดยเฉพาะและสำหรับคนอื่น ๆ ที่สะดุดในหัวข้อนี้ในภายหลัง

ไชโย :)


ใช่ฉันต้องยอมรับว่าฉันเคยใช้ Notepad ++ มาก่อนหน้านี้
Jon Cage

1
@ JonCage มีใครบางคนในหัวข้อนี้sevenforums.com/software/ … ที่พูดเช่นเดียวกับคุณว่า "ฉันยอมรับ" เมื่อพูดถึงสิ่งที่มีประโยชน์ นั่นเป็นวิธีการพูดที่แปลกมาก คุณอาจต้องการพบกับบุคคลนั้น บางทีคู่ของคุณ
barlop

Notepad ++ ดีมาก บรรณาธิการของโปรแกรมเมอร์คนอื่น ๆ เช่น SciTE มีฟังก์ชั่นที่คล้ายกันเช่นกัน
TimothyAWiseman


5

Findstrใช้ได้สำหรับฉันเสมอ มันสามารถใช้ text * wildcards หรือ regex สำหรับสตริงการค้นหา Findstr /?มากขึ้น


5

ในระบบ Unix คนส่วนใหญ่มักจะใช้ grep เพื่อทำสิ่งนี้ดังนั้นทำไมไม่ใช้ Windows Grep?

http://www.wingrep.com/


Windows Grep บางครั้งอาจไม่เสถียร แต่เป็นโปรแกรมค้นหาที่เร็วที่สุดที่ฉันเคยใช้
yakatz

@yakatz ขอบคุณที่กล่าวถึงความไม่เสถียรที่อาจเกิดขึ้นกับ Windows Grep ฉันจะค้นหา grep / replace tool อื่น!
pacoverflow

wingrep ถูกยกเลิก แต่grepwinยังคงใช้งานได้ดีมาก
techturtle

3

นี่เป็นวิธีแก้ปัญหา Powershell:

gci -r $SomePath -filter "*.cpp","*.h" | Select-String $FindThisString

-rในgciสำหรับ recurse และแน่นอนเป็นตัวเลือกเช่นเดียวกับสองตัวกรองนามสกุลไฟล์ พารามิเตอร์ที่มีประโยชน์Select-Stringคือ-listซึ่งจะรายงานเฉพาะอินสแตนซ์แรกของการจับคู่ในไฟล์แทนที่จะให้แต่ละเหตุการณ์ที่เกิดขึ้นต่อไฟล์

คุณอาจต้องการเปิดแต่ละไฟล์ที่พบการแข่งขันทันทีหรือไม่ การเปลี่ยนแปลงเล็ก ๆ น้อย ๆ ต่อไปนี้มีประโยชน์มากขึ้นอยู่กับว่าคุณมีการเชื่อมโยงไฟล์เริ่มต้นเป็นอย่างไร:

gci -r $SomePath -filter "*.cpp","*.h" | Select-String $FindThisString -list | ii


ผมกำลังจะโพสต์สิ่งเดียวกัน :)
คาเลบ Jares

คุณแน่ใจหรือว่า-filter "*.cpp","*.h"ยอมรับหลายนามสกุล สิ่งนี้ควรอ่าน-include ("*.cpp","*.hpp")
mloskot

2

ขณะทำการแปลภาษาท้องถิ่นของ SW ฉันใช้DocFetcherเพื่อค้นหาสตริงเดียวกันในไฟล์ที่แปลก่อนหน้านี้ มันฟรีและโอเพ่นซอร์ส แต่ต้องสร้างดัชนีก่อน แค่ลองดู. :-)


1

ใช้ "สตริง" ให้โดยM $ พวกเขาซื้อสาธารณูปโภคที่ดีมากจาก Sysinternals เมื่อไม่กี่ปีก่อน ไม่จำเป็นต้องติดตั้งเพียงวางลงในกล่องและเรียกใช้มันเพื่อไวยากรณ์ ใช้งานง่ายและสุดยอด!


1

grepการใช้งานอื่นสำหรับ Windows โดยนักพัฒนา svn เต่าที่มีชื่อเสียง:

grepWin


0

หากคุณมีความสุขในบรรทัดคำสั่ง / กับ Linux ฉันขอแนะนำให้ดูการติดตั้ง grep สำหรับ windows หรือไม่

cygwinเป็นวิธีที่มีประโยชน์พอสมควรในการรับเรื่องนี้และจะมอบสภาพแวดล้อม Linux ที่สมบูรณ์พร้อมด้วย bash เชลล์และเทอร์มินัล rxvt มิฉะนั้นหากคุณต้องการเครื่องมือที่มีgnuwin32แต่คุณจะติดกับพรอมต์ Windows cmd.exe

Microsoft มีเครื่องมือ Unix เวอร์ชันเป็นของตัวเองแต่พวกเขาดูค่อนข้างช้าเมื่อเทียบกับพอร์ต gnu เมื่อฉันลองใช้ พวกเขายังจะทิ้งเรื่องนี้ด้วย Windows 8


0

นี่คือวิธีที่ฉันค้นหาสตริงข้อความใน Windows Registry หรือไฟล์บนเครื่อง Windows XP ของฉัน สมมติว่าฉันต้องการหาสตริง "Enterprise" ในไฟล์ข้อความธรรมดาบนไดรฟ์ c: แล้วเขียนผลลัพธ์ไปยังไฟล์ชื่อ search_result.txt ใน c: \ windows \ temp

เปิดพรอมต์คำสั่งจากนั้นพิมพ์:

findstr "องค์กร" c: *. txt> c: \ windows \ temp \ search_result.txt

สตริงที่คุณค้นหาคำนึงถึงขนาดตัวพิมพ์ "Enterprise" และ "enterprise" จะไม่พบสตริงเดียวกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.