Як випливає з назви, який найшвидший (точний) спосіб знайти, які рядки файлів відповідають певному рядку.
Зокрема, я шукаю .cpp
і .h
файли.
Як випливає з назви, який найшвидший (точний) спосіб знайти, які рядки файлів відповідають певному рядку.
Зокрема, я шукаю .cpp
і .h
файли.
Відповіді:
У блокноті ++ є опція "знайти у файлах", яка знаходиться в меню "Пошук". Це дозволить вам шукати кілька файлів у папці (ви можете вказати папку), а також покаже номери рядків кожного файлу. . Ви можете переключити, чи включаються в пошук підпапки та приховані папки, і це також дозволить вам шукати за допомогою \ t \ n тощо та шукати за допомогою регулярних виразів.
Notepad ++ - це редактор програмістів Windows (а не IDE) і є також з відкритим кодом.
(Я розумію , що ви , швидше за все , чули про Notepad ++, але я просто згадати його тут , як варіант , упаковують ви не знали про цю конкретної функції, і для тих , хто наштовхнутися на цю тему пізніше.
Ура :)
Агент Рансак працює як шарм. Завантажте його тут .
У системах 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 для пошуку тих же рядків у раніше перекладених файлах. Він безкоштовний і з відкритим кодом, але для початку потрібно створити індекс. Просто спробуйте. :-)
Якщо ви раді в командному рядку / з Linux. Можливо, я б запропонував переглянути версію grep для Windows?
cygwin - це досить зручний спосіб досягти цього і надасть вам повне середовище Linux, з оболонкою bash та rxvt-терміналом. В іншому випадку, якщо ви просто хочете, щоб інструменти є gnuwin32, але тоді ви будете застрягли у вікні Windows cmd.exe.
Microsoft насправді має власну версію інструментів Unix як завантаження, але вони здавалися досить повільними порівняно з портами gnu, коли я спробував їх. Вони також збираються брати їх з Windows 8.
Ось так я шукаю текстові рядки в реєстрі Windows або файли на моїй машині Windows XP. Припустимо, що я хочу знайти рядок "Enterprise" у простому текстовому файлі на c: диску, а потім записати вихід у файл під назвою search_result.txt у c: \ windows \ temp
Відкрийте командний рядок і введіть:
findstr "Підприємство" c: *. txt> c: \ windows \ temp \ search_result.txt
Рядок, яку ви шукаєте, відрізняється від регістру. "Підприємство" та "підприємство" не знайдуть однаковий рядок.