Інструменти для пошуку рядків у файлах без індексації [закрито]


170

Мені потрібно змінити деякі рядки з'єднання в неймовірно старій застарілій програмі, і програмісти, які зробили це, вважають, що буде чудовою ідеєю штукатурити всю програму за допомогою рядків підключення.

Пошук "поточного проекту" Visual Studio неймовірно повільний, і я не довіряю пошуку Windows.

Отже, який найкращий безкоштовний неіндексований інструмент пошуку тексту? Все, що потрібно зробити, це повернути список з файлами, які містять шуканий рядок всередині папки та її підпапок.

Я запускаю Windows 2003 Server.


010 Editorшукає файли huuuge за 0 секунди.
Morteza Ziyae

Депеш Вигляд б'є все інше на цій сторінці, руки вниз. Існує декілька ярликів, які вам захочеться пройти пару хвилин, щоб прочитати файл довідки та дізнатися, хоча. stahlworks.com/dev/depeche-view.html
BVernon

Я також дуже багато цього використовую, проте він змушує вас натискати на кожен файл результатів, щоб побачити відповідність вмісту на правій панелі. Також вміст файлу на правій панелі не можна масштабувати (розмір шрифту занадто малий).
Мерян

Це хороше питання для інженерії програмного забезпечення, але офтопік для SO. Який веб-сайт мережі SE це на тему? Див., Наприклад, питання SE.SE на "пошуковій кодовій базі". Ми повинні перенести це питання, щоб воно могло бути знову відкрито!
smci

1
Погляньте на пошук файлового вмісту в магазині додатків (відмова - я розробник). Він може шукати у текстових / вихідних файлах, а також у форматі pdf, doc (x), xls (x) та навіть відсканованих файлах jpg / png - microsoft.com/en-au/p/file-content-finder/9mzc4sk6j6bp
Geo Systems

Відповіді:


60

Оригінальний відповідь

Windows Grep робить це дуже добре.

Редагувати: Windows Grep більше не підтримується і не надається розробником. Альтернативне посилання для завантаження тут: Windows Grep - альтернативне

Поточна відповідь

Visual Studio Code має відмінні можливості пошуку та заміни файлів. Це надзвичайно швидко, підтримує регулярний вираз і попередній перегляд перед заміною.

введіть тут опис зображення



10
На моїй машині (Windows 7) вона вийшла з ладу двічі. Я спробую щось інше.
Б. Клей Шеннон

2
Він старий, він розбився і для мене. Навіть якщо не ідеально підходить для деяких цілей grepWin краще imoh
Паоло

9
AstroGrep також швидко , і це не-Встановіть фільтри і зберіть
Зорб

Для мене добре працювали в Windows 7 - без збоїв
w5m

364

Я прихильник діалогового вікна " Знайти в файлах" у " Блокноті ++" . Бонус : Безкоштовно.

введіть тут опис зображення


Що, на жаль, не може або не шукає всі файли Microsoft Word. Щось про різницю між ".doc" та ".docm" я підозрюю
Карл Віттофт

11
@CarlWitthoft .docm, як-от .docx, .xlsmі .xlsxнасправді є поштовими документами XML.
Ян Бойд

1
він добре працює для невеликих папок з нормальною кількістю файлів, висить для великих розмірів з багатьма папками файлів, принаймні, коли я використовую свій ноутбук. Трохи швидше при використанні потужного ПК. Більше того, під час пошуку, не вдається відкрити жодні інші файли.
Мохаммед Жораїд

Знайшов мій текст. Однак не дозволив мені вибрати в результатах, які значення замінити, а які зберегти. Все або нічого?
ofer.sheffer

5
Не мав уявлення, що це навіть варіант у блокноті ++. Відмінне рішення для пошуку відсутніх файлів! Однак, схоже, виникають проблеми з великими розмірами файлів. Інколи він дає помилку "файл занадто великий, щоб відкрити".
Іван Серпень

167

Існує також вбудована програма Windows, за findstr.exeдопомогою якої можна здійснювати пошук у файлах.

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

3
Просто та ефективно!
Маркус Фантоне

Це набагато швидше, ніж Windows Explorer, і фактично я знайшов текст, який я шукав, тоді як використання Провідника Windows не дало для мене результатів пошуку. Дякую.
mbomb007

1
Для мене найкраща відповідь на цю тему, тому що вам нічого не потрібно встановлювати. У моєму випадку мені довелося доповнити додавання деяких аргументів, оскільки на екрані з’являється занадто багато інформації. Аргумент / M перераховує лише ім'я файлу, який містить інформацію, яку я шукав. Для доступу до посібника з командою findstr введіть "findstr /?" в консолі.
Олександр Рібейро

Це чудова програма, але, схоже, вона не може читати символи кирилиці у назвах файлів. Наприклад:FINDSTR: Cannot open ???????????.txt
Артем Русаковський

1
findstr не підтримує текст UTF16.
Девід Бремнер

34

Мені подобається AstroGrep. Результати відображаються у списку. Клацання рядка показує вам весь рядок у вигляді попереднього перегляду, що підкреслює звернення. Це здається досить швидким, худорлявим і вільним. Тестовано на Windows 7, 8, 10 та Windows Server 2008 R2. Дозволяє регулярні вирази.

Останній скріншот AstroGrep

AstroGrep - це утиліта пошуку файлів із графічним інтерфейсом Microsoft Windows (grep). Його функції включають регулярні вирази, універсальні параметри друку, зберігає останні використовувані шляхи та має функцію "контексту", що дуже приємно для перегляду вихідного коду

Довідка: AstroGrep


7
Окрім усіх інших, перерахованих тут, це єдине, що дозволяє задавати шаблони виключення для папок. Можливо, корисно при спробі пропустити папки типу " node_modulesабо" bower_components.
Mrchief

1
Дуже гарне програмне забезпечення, швидке налаштування та показ файлів разом із відповідним контекстом
HanniBaL90

1
І "швидкий" заслуговує на другу згадку ...self == happy
cssyphus

9

Пошук Visual Studio у папках - це найшвидше, що я знайшов.

Я вважаю, що розумно шукає лише текстові (не двійкові) файли, а подальший пошук у тій же папці надзвичайно швидкий, на відміну від інших інструментів (швидше за все, текстові файли вміщуються в кеш-пам'яті Windows).

VS2010 на звичайному жорсткому диску, без SSD, займає 1 хвилину для пошуку в папці 20 ГБ з файлами 26K, вихідним кодом та бінарними файлами. Шукається 15 к. Файлів - решта, ймовірно, пропускаються через те, що є двійковими файлами. Подальші пошуки в тій самій папці здійснюються в порядку секунд (поки матеріал не буде вилучений з кешу).

Наступним найближчим, який я знайшов для цієї ж папки, був grepWin. Приблизно 3 хвилини. Я виключив файли розміром більше 2000 Кб (за замовчуванням). Налаштування "Включити бінарні файли", здається, нічого не робить з точки зору прискорення пошуку, схоже, що двійкові файли все ще торкаються (помилка?), Але вони не відображаються в результатах пошуку. Подальші пошуки займають ті самі 3 хвилини - не можна скористатися кешем жорсткого диска. Якщо я обмежуюся файлами розміром менше 200 кб, початковий пошук становить 2,5 хв., А наступні пошуки - це близько секунд, приблизно так само швидко, як VS - у кеші.

Агент Рансак і FileSeek обидва дуже повільно знаходяться у цій папці, приблизно за 20 хвилин, через пошук у всьому, включаючи гігантські багатогігабайтні бінарні файли. За даними Resource Monitor, вони шукають приблизно 10-20 МБ в секунду.

ОНОВЛЕННЯ: Агент Ransack можна встановити для пошуку файлів певних розмірів, а за допомогою <200KB відсікання це 1: 15min для нового пошуку та 5s для наступних пошуків. Швидше grepWin та швидше, ніж VS в цілому. Насправді це дуже приємно, якщо ви хочете тримати кілька пошукових запитів на вкладках, і ви не хочете забруднювати список нещодавно шуканих папок VS, і ви хочете зберегти можливість пошуку бінарних файлів, що, схоже, VS не хоче робити. Агент Рансак також створює запис контекстного меню провідника, тому його легко запустити з папки. Те саме, що і grepWin, але приємніший інтерфейс користувача та швидший.

Моя нова настройка пошуку - це агент 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.