ตามที่ชื่อแนะนำสิ่งที่เป็นวิธีที่เร็วที่สุด (แม่นยำ) ในการค้นหาว่าไฟล์ใดที่ตรงกับสตริงเฉพาะ
โดยเฉพาะฉันกำลังค้นหา.cpp
และ.h
ไฟล์
ตามที่ชื่อแนะนำสิ่งที่เป็นวิธีที่เร็วที่สุด (แม่นยำ) ในการค้นหาว่าไฟล์ใดที่ตรงกับสตริงเฉพาะ
โดยเฉพาะฉันกำลังค้นหา.cpp
และ.h
ไฟล์
คำตอบ:
Notepad ++ มีตัวเลือก 'ค้นหาในไฟล์' ซึ่งอยู่ในเมนู 'ค้นหา' ซึ่งจะทำให้คุณสามารถค้นหาไฟล์หลายไฟล์ในโฟลเดอร์ (คุณสามารถระบุโฟลเดอร์) และจะแสดงหมายเลขบรรทัดของแต่ละไฟล์เช่นกัน . คุณสามารถสลับได้ว่าจะรวมโฟลเดอร์ย่อยและโฟลเดอร์ที่ซ่อนอยู่ในการค้นหาหรือไม่และยังช่วยให้คุณค้นหาด้วย \ t \ n ฯลฯ และค้นหาด้วยนิพจน์ทั่วไปหากคุณต้องการ
Notepad ++ เป็นตัวแก้ไขโปรแกรมเมอร์ของ Windows (ไม่ใช่ IDE) และเป็น Open Source ด้วย
(ฉันรู้ว่าคุณเคยได้ยินแผ่นจดบันทึก ++ มากที่สุด แต่ฉันเพิ่งพูดถึงที่นี่เพื่อเป็นตัวเลือกในกรณีที่คุณไม่ทราบคุณลักษณะนี้โดยเฉพาะและสำหรับคนอื่น ๆ ที่สะดุดในหัวข้อนี้ในภายหลัง
ไชโย :)
Findstr
ใช้ได้สำหรับฉันเสมอ มันสามารถใช้ text * wildcards หรือ regex สำหรับสตริงการค้นหา Findstr /?
มากขึ้น
ในระบบ Unix คนส่วนใหญ่มักจะใช้ grep เพื่อทำสิ่งนี้ดังนั้นทำไมไม่ใช้ Windows Grep?
นี่เป็นวิธีแก้ปัญหา 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
-filter "*.cpp","*.h"
ยอมรับหลายนามสกุล สิ่งนี้ควรอ่าน-include ("*.cpp","*.hpp")
ขณะทำการแปลภาษาท้องถิ่นของ SW ฉันใช้DocFetcherเพื่อค้นหาสตริงเดียวกันในไฟล์ที่แปลก่อนหน้านี้ มันฟรีและโอเพ่นซอร์ส แต่ต้องสร้างดัชนีก่อน แค่ลองดู. :-)
ใช้ "สตริง" ให้โดยM $ พวกเขาซื้อสาธารณูปโภคที่ดีมากจาก Sysinternals เมื่อไม่กี่ปีก่อน ไม่จำเป็นต้องติดตั้งเพียงวางลงในกล่องและเรียกใช้มันเพื่อไวยากรณ์ ใช้งานง่ายและสุดยอด!
grep
การใช้งานอื่นสำหรับ Windows โดยนักพัฒนา svn เต่าที่มีชื่อเสียง:
หากคุณมีความสุขในบรรทัดคำสั่ง / กับ Linux ฉันขอแนะนำให้ดูการติดตั้ง grep สำหรับ windows หรือไม่
cygwinเป็นวิธีที่มีประโยชน์พอสมควรในการรับเรื่องนี้และจะมอบสภาพแวดล้อม Linux ที่สมบูรณ์พร้อมด้วย bash เชลล์และเทอร์มินัล rxvt มิฉะนั้นหากคุณต้องการเครื่องมือที่มีgnuwin32แต่คุณจะติดกับพรอมต์ Windows cmd.exe
Microsoft มีเครื่องมือ Unix เวอร์ชันเป็นของตัวเองแต่พวกเขาดูค่อนข้างช้าเมื่อเทียบกับพอร์ต gnu เมื่อฉันลองใช้ พวกเขายังจะทิ้งเรื่องนี้ด้วย Windows 8
นี่คือวิธีที่ฉันค้นหาสตริงข้อความใน Windows Registry หรือไฟล์บนเครื่อง Windows XP ของฉัน สมมติว่าฉันต้องการหาสตริง "Enterprise" ในไฟล์ข้อความธรรมดาบนไดรฟ์ c: แล้วเขียนผลลัพธ์ไปยังไฟล์ชื่อ search_result.txt ใน c: \ windows \ temp
เปิดพรอมต์คำสั่งจากนั้นพิมพ์:
findstr "องค์กร" c: *. txt> c: \ windows \ temp \ search_result.txt
สตริงที่คุณค้นหาคำนึงถึงขนาดตัวพิมพ์ "Enterprise" และ "enterprise" จะไม่พบสตริงเดียวกัน