เครื่องมือในการค้นหาสตริงภายในไฟล์โดยไม่สร้างดัชนี [ปิด]


170

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

การค้นหา "โครงการปัจจุบัน" ของ Visual Studio ช้าอย่างไม่น่าเชื่อและฉันไม่เชื่อถือการค้นหาของ Windows

ดังนั้นเครื่องมือค้นหาข้อความที่ฟรีและไม่มีการจัดทำดัชนีที่ดีที่สุดคืออะไร สิ่งที่ควรทำคือส่งคืนรายการพร้อมไฟล์ที่มีสตริงที่ต้องการภายในโฟลเดอร์และโฟลเดอร์ย่อย

ฉันใช้ Windows 2003 Server


010 Editorค้นหาไฟล์ huuuge ใน 0 วินาที
Morteza Ziyae

Depeche View ชนะทุกอย่างในหน้านี้ มีทางลัดบางอย่างที่คุณต้องการใช้เวลาสองสามนาทีในการอ่านไฟล์ช่วยเหลือและเรียนรู้ว่า stahlworks.com/dev/depeche-view.html
BVernon

ฉันใช้มันเยอะเหมือนกัน แต่มันบังคับให้คุณคลิกที่ไฟล์ผลลัพธ์แต่ละไฟล์เพื่อดูเนื้อหาที่ตรงกันในบานหน้าต่างด้านขวา นอกจากนี้เนื้อหาไฟล์ในบานหน้าต่างด้านขวาไม่สามารถซูมได้ (ขนาดตัวอักษรเล็กเกินไป)
Meryan

นี่เป็นคำถามที่ดีสำหรับวิศวกรรมซอฟต์แวร์ แต่ไม่น่าสนใจใน SO ไซต์เครือข่าย SE ใดที่อยู่ในหัวข้อ ดูเช่นคำถาม SE.SE ที่ 'ค้นหา codebase'เราควรโยกย้ายคำถามนี้เพื่อให้สามารถเปิดใหม่ได้!
smci

1
ดูที่ File Content Finder ที่ app store (ปฏิเสธความรับผิดชอบ - ฉันเป็นผู้พัฒนา) มันสามารถค้นหาในไฟล์ข้อความ / แหล่งที่มา แต่ยังอยู่ใน pdf, doc (x), xls (x), และแม้กระทั่งไฟล์ jpg / png ที่สแกนแล้ว - microsoft.com/en-au/p/file-content-finder/9mzc4sk6j6bp
ระบบทางภูมิศาสตร์

คำตอบ:


60

คำตอบเดิม

Windows Grepทำได้ดีมาก

แก้ไข: Grep Windows ไม่ได้รับการดูแลรักษาหรือให้บริการโดยผู้พัฒนาอีกต่อไป ลิงค์ดาวน์โหลดอื่นอยู่ที่นี่: Windows Grep - Alternate

คำตอบปัจจุบัน

Visual Studio Codeมีการค้นหาและแทนที่ความสามารถที่ยอดเยี่ยมในไฟล์ต่างๆ มันเร็วมากรองรับ regex และแสดงตัวอย่างแบบสดก่อนที่จะเปลี่ยน

ป้อนคำอธิบายรูปภาพที่นี่



10
บนเครื่องของฉัน (Windows 7) มันพังสองครั้ง ฉันจะลองอย่างอื่น
B. Clay Shannon

2
มันเก่ามันก็ล้มเหลวสำหรับฉันเช่นกัน แม้ว่าจะไม่สมบูรณ์แบบสำหรับบางเป้าหมาย grepWin นั้นดีกว่า imoh
เปาโล

9
AstroGrep รวดเร็วเช่นกันและไม่มีมาตรฐาน
Zorb

ทำงานได้ดีสำหรับฉันใน Windows 7 - ไม่มีข้อขัดข้อง
w5m

364

ฉันเป็นแฟนของการค้นหาในไฟล์โต้ตอบในNotepad ++ โบนัส : ฟรี

ป้อนคำอธิบายรูปภาพที่นี่


ซึ่งน่าเสียดายที่ไม่สามารถค้นหาไฟล์ Microsoft Word ทั้งหมดได้ บางอย่างเกี่ยวกับความแตกต่างระหว่าง ".doc" และ ".docm" ฉันสงสัย
Carl Witthoft

11
@CarlWitthoft .docmเช่น.docx, .xlsmและ.xlsxเป็นเอกสาร XML จริง ๆ
Ian Boyd

1
มันทำงานได้ดีสำหรับโฟลเดอร์ขนาดเล็กที่มีจำนวนไฟล์ปกติแฮงค์สำหรับขนาดใหญ่ที่มีโฟลเดอร์ไฟล์จำนวนมากอย่างน้อยเมื่อฉันใช้แล็ปท็อปของฉัน เร็วขึ้นเล็กน้อยเมื่อใช้พีซีที่ทรงพลัง ยิ่งไปกว่านั้นขณะที่ค้นหาอยู่ไม่สามารถเปิดไฟล์อื่นได้
Mohammed Joraid

พบข้อความของฉัน อย่างไรก็ตามไม่อนุญาตให้ฉันเลือกผลลัพธ์ที่จะแทนที่และที่จะเก็บไว้ ทั้งหมดหรือไม่มีอะไร?
ofer.sheffer

5
ไม่รู้เลยว่านี่เป็นตัวเลือกใน notepad ++ ทางออกที่ดีในการค้นหาไฟล์ที่หายไป! อย่างไรก็ตามดูเหมือนว่าจะมีปัญหากับขนาดไฟล์ใหญ่ บางครั้งมันจะทำให้เกิดข้อผิดพลาด "ไฟล์ใหญ่เกินไปที่จะเปิด"
John August

167

นอกจากนี้ยังมีโปรแกรม Windows ที่เรียกว่าfindstr.exeคุณสามารถค้นหาไฟล์ได้

>findstr /s "provider=sqloledb" *.cs

3
ง่ายและมีประสิทธิภาพ!
Markus Fantone

สิ่งนี้เร็วกว่า Windows Explorer และพบข้อความที่ฉันค้นหาจริง ๆ ในขณะที่การใช้ Windows Explorer ไม่ได้ให้ผลลัพธ์การค้นหาสำหรับฉัน ขอบคุณ
mbomb007

1
สำหรับฉันคำตอบที่ดีที่สุดในหัวข้อนี้เพราะคุณไม่จำเป็นต้องติดตั้งอะไรเลย ในกรณีของฉันฉันต้องเสริมการเพิ่มข้อโต้แย้งบางอย่างเพราะมีข้อมูลมากเกินไปที่จะปรากฏบนหน้าจอ อาร์กิวเมนต์ / M แสดงรายการชื่อไฟล์ที่มีข้อมูลที่ฉันกำลังค้นหา หากต้องการเข้าถึงคู่มือของคำสั่ง findstr ให้พิมพ์ "findstr /?" ในคอนโซล
Alexandre Ribeiro

นี่เป็นประโยชน์ที่ดี แต่ดูเหมือนว่าจะไม่สามารถอ่านอักขระซิริลลิกในชื่อไฟล์ได้ ตัวอย่างเช่น:FINDSTR: Cannot open ???????????.txt
Artem Russakovskii

1
findstr ไม่รองรับข้อความ UTF16
David Bremner

34

ฉันชอบ AstroGrep ผลลัพธ์จะแสดงในรายการ การคลิกที่แถวจะแสดงให้คุณเห็นทั้งบรรทัดว่าเป็นตัวอย่างที่เน้นการตี ดูเหมือนว่าจะค่อนข้างเร็วผอมและฟรี ทดสอบกับ Windows 7, 8, 10 และ Windows Server 2008 R2 อนุญาตการแสดงออกปกติ

ภาพหน้าจอ AstroGrep ล่าสุด

AstroGrep เป็นโปรแกรมอรรถประโยชน์การค้นหาไฟล์ (grep) Microsoft Windows GUI คุณสมบัติของมันรวมถึงการแสดงออกปกติตัวเลือกการพิมพ์ที่หลากหลายเก็บเส้นทางที่ใช้ล่าสุดและมีคุณสมบัติ "บริบท" ซึ่งดีมากสำหรับการดูซอร์สโค้ด

การอ้างอิง: AstroGrep


7
นอกเหนือจากรายการอื่น ๆ ทั้งหมดที่นี่นี่เป็นสิ่งเดียวที่ให้ระบุรูปแบบการแยกสำหรับโฟลเดอร์ ที่เป็นประโยชน์อันยิ่งใหญ่เมื่อพยายามที่จะข้ามโฟลเดอร์เช่นหรือnode_modules bower_components
Mrchief

1
ดีมากซอฟแวร์ได้อย่างรวดเร็ว, การกำหนดค่าและไฟล์แสดงพร้อมกับบริบทที่เกี่ยวข้อง
HanniBaL90

1
และ 'รวดเร็ว' สมควรได้รับการกล่าวถึงสอง ...self == happy
cssyphus

9

การค้นหาของ Visual Studio ในโฟลเดอร์นั้นเร็วที่สุดเท่าที่ฉันเคยพบ

ฉันเชื่อว่าจะค้นหาเฉพาะไฟล์ข้อความ (ไม่ใช่ไบนารี) อย่างชาญฉลาดและการค้นหาที่ตามมาในโฟลเดอร์เดียวกันนั้นเร็วมากซึ่งต่างจากเครื่องมืออื่น ๆ (น่าจะเป็นไฟล์ข้อความที่พอดีกับแคชดิสก์ของ windows)

VS2010 บนฮาร์ดไดรฟ์ปกติไม่มี SSD ใช้เวลา 1 นาทีในการค้นหาโฟลเดอร์ 20GB ด้วยไฟล์ 26k ซอร์สโค้ดและไบนารีรวมกัน มีการค้นหาไฟล์ 15k - ส่วนที่เหลือน่าจะข้ามเนื่องจากเป็นไฟล์ไบนารี การค้นหาครั้งต่อไปในโฟลเดอร์เดียวกันนั้นจะอยู่ในลำดับวินาที (จนกว่าสิ่งต่างๆจะถูกลบออกจากแคช)

ถัดไปที่ฉันพบใกล้ที่สุดสำหรับโฟลเดอร์เดียวกันคือ grepWin ประมาณ 3 นาที ฉันยกเว้นไฟล์ที่มีขนาดใหญ่กว่า 2000KB (ค่าเริ่มต้น) ดูเหมือนว่าการตั้งค่า "รวมไฟล์ไบนารี" จะไม่ทำอะไรเลยในแง่ของการเร่งความเร็วในการค้นหาดูเหมือนว่าไฟล์ไบนารีจะยังคงแตะต้องอยู่ (ข้อผิดพลาด?) แต่พวกเขาจะไม่ปรากฏในผลการค้นหา การค้นหาครั้งต่อมาทั้งหมดใช้เวลา 3 นาทีเดียวกัน - ไม่สามารถใช้ประโยชน์จากแคชของฮาร์ดไดรฟ์ได้ หากฉัน จำกัด ไฟล์ที่เล็กกว่า 200k การค้นหาเริ่มต้นคือ 2.5 นาทีและการค้นหาครั้งต่อไปจะเรียงตามลำดับวินาทีโดยเร็วเท่ากับ VS - ในแคช

Agent Ransack และ FileSeek ทั้งคู่นั้นช้ามากในโฟลเดอร์นั้นใช้เวลาประมาณ 20 นาทีเนื่องจากการค้นหาทุกอย่างรวมถึงไฟล์ไบนารี่ขนาดใหญ่หลายกิกะไบต์ พวกเขาค้นหาที่ประมาณ 10-20MB ต่อวินาทีตาม Resource Monitor

อัปเดต: Agent Ransack สามารถตั้งค่าให้ค้นหาไฟล์ที่มีขนาดบางและใช้การตัด <200KB เป็นเวลา 1: 15 นาทีสำหรับการค้นหาใหม่และ 5s สำหรับการค้นหาในภายหลัง เร็วกว่า grepWin และเร็วเท่ากับ VS โดยรวม จริงๆแล้วมันค่อนข้างดีถ้าคุณต้องการเก็บการค้นหาหลาย ๆ แท็บและคุณไม่ต้องการที่จะทำให้มลภาวะ VS ที่เพิ่งค้นหารายการโฟลเดอร์และคุณต้องการที่จะรักษาความสามารถในการค้นหาไบนารีซึ่ง VS ดูเหมือนจะไม่ต้องการทำ Agent Ransack ยังสร้างรายการเมนูบริบทของ explorer ดังนั้นจึงง่ายต่อการเปิดจากโฟลเดอร์ เหมือนกับ grepWin แต่ดีกว่า UI และเร็วกว่า

การตั้งค่าการค้นหาใหม่ของฉันคือ Agent Ransack สำหรับเนื้อหาและทุกอย่างสำหรับชื่อไฟล์ (เครื่องมือสุดยอดผลทันที!)


3

หากคุณไม่ต้องการติดตั้งเครื่องมือที่ไม่ใช่ของ Microsoft โปรดดาวน์โหลด STRINGS.EXEจาก Microsoft Sysinternals และทำตามขั้นตอนดังนี้:

@echo off
if '%1' == '' goto NOPARAM
if '%2' == '' goto NOPARAM
if not exist %1 goto NOFOLDER

echo ------------------------------------------
echo - %1 : folder
echo - %2 : string to be searched in the folder
echo - PLEASE WAIT FOR THE RESULTS ...
strings -s %1\* | findstr /i %2 > grep.txt
notepad.exe grep.txt

goto END

:NOPARAM rem - input command not correct
echo ====================================
echo Usage of GREP.CMD:
echo   Grep "SearchFolder" SearchString
echo Please specify all parameters
echo ====================================
goto END

:NOFOLDER
echo Folder %1 does not exist
goto END

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