Visual studio поиск по маске
Есть ли способ искать текст во всех файлах в каталоге с помощью VS Code?
То есть, если я наберу «найди это» в моем поиске, он выполнит поиск по всем файлам в текущем каталоге и вернет совпавшие файлы. В принципе, как если бы я сделал grep. Мой коллега сказал мне, что у Sublime есть что-то вроде этого.
Вы можете использовать Редактировать , Найти в файлах (или Ctrl + Shift + F - привязка клавиш по умолчанию, Cmd + Shift + F в MacOS) для поиска в текущей открытой папке.
В диалоговом окне есть многоточие, в котором вы можете включать / исключать файлы, а также параметры в поле поиска для сопоставления регистра / слова и использования Regex.
Это действие по умолчанию не привязано к клавише, чтобы привязать его, сделайте следующее:
- Файл> Настройки> Сочетания клавиш ( Ctrl + K , Ctrl + S )
- Искать "найти папку"
- Нажмите значок + слева от результатов поиска "filesExplorer.findInFolder"
- Введите желаемую комбинацию клавиш
Чтобы добавить к вышесказанному, если вы хотите выполнить поиск в выбранной папке, щелкните папку правой кнопкой мыши и выберите «Найти в папке» или привязку ключа по умолчанию:
Как уже упоминалось, для поиска во всех папках в вашем проекте нажмите «Правка»> «Найти в файлах» или:
Что НЕ так очевидно, так это то, что вы можете использовать следующий шаблон для рекурсивного поиска
Поэтому, возможно, оставьте следующее значение по умолчанию для большинства ваших типичных поисковых запросов, чтобы напомнить, что есть такая вещь
Например, мне был нужен атрибут для выравнивания / закрепления содержимого влево-вправо, я не мог вспомнить, кроме "start", поэтому я выполнил следующий поиск, который показывает мне "item-start"
Это исправило мой макет на
Вот где в шаблоне находится «предмет-сарт».
Я думаю, что это официальное руководство должно работать для вашего случая.
VS Code позволяет быстро искать все файлы в открытой в данный момент папке. Нажмите Ctrl + Shift + F и введите поисковый запрос. Результаты поиска группируются в файлы, содержащие поисковый запрос, с указанием совпадений в каждом файле и его местоположения. Разверните файл, чтобы просмотреть все обращения в этом файле. Затем щелкните один из обращений, чтобы просмотреть его в редакторе.
Если у вас есть каталог, открытый в VSCode, и вы хотите выполнить поиск в подкаталоге, либо:
- ctrl - shift - F затем в поле files to include введите путь с начальным знаком ./ ,
- ctrl - shift - E , чтобы открыть проводник, щелкните правой кнопкой мыши каталог, в котором хотите выполнить поиск, и выберите параметр Find in Folder. .
И, кстати, для вас, коллеги-гуглеры, для выбора нескольких папок во вводе поиска вы разделяете каталоги запятыми. Работает как для исключения, так и для включения
Поиск по файлам - нажмите Ctrl+Shift+F
Найти - нажмите Ctrl+F
Найти и заменить - Ctrl+H
Примечание. Для Mac Ctrl представляет собой командную кнопку.
Ctrl + P (Win, Linux), Cmd + P (Mac) - быстрое открытие, переход к файлу
Введите ключевое слово для поиска в поиск (CTRL + SHIFT + F)
Исключите ненужные папки / файлы с помощью опции исключения (!)
пример:! Папка / Файл *
Результаты поиска дают желаемый результат
Чтобы искать только в одной папке, вы должны щелкнуть по ней и нажать Alt + Shift + F .
Когда вы используете Ctrl , VS Code просматривает весь проект.
Нажмите Ctrl + Shift + F
Нажмите на 3 точки под окном поиска.
Введите свой запрос в поле поиска
Введите ./FOLDERNAME в поле файлы для включения и нажмите Enter
Альтернативный способ: щелкните папку правой кнопкой мыши и выберите Найти в папке .
Выберите свою папку, Нажмите ⌥ + ⇧ + F Не знаю насчет окон, но это работает для Mac :)
Простой ответ - нажать на увеличительное стекло на левой боковой панели.
- Перейдите в проводник ( Ctrl + Shift + E )
- Щелкните правой кнопкой мыши свою любимую папку
- Выберите «Найти в папке».
Поисковый запрос будет предварительно заполнен путем в разделе «файлы для включения».
Функция Поиск в файлах позволяет выполнять поиск в указанном наборе файлов. Найденные Visual Studio совпадения приводятся в окне Результаты поиска в интегрированной среде разработки. Способ отображения результатов зависит от параметров, выбранных на вкладке Найти в файлах диалогового окна Найти и заменить.
Если вы используете Visual Studio 2019 версии 16.6 или более ранней, диалоговое окно Найти и заменить может выглядеть не так, как показано здесь. Перейдите на версию этой страницы для Visual Studio 2017, чтобы получить правильное описание.
Отображение функции поиска в файлах
Чтобы открыть диалоговое окно Найти и заменить, выполните указанные ниже действия или нажмите клавиши CTRL+SHIFT+F.
Нажмите клавиши CTRL+Q и введите "найти" в поле поиска в верхней части экрана.
Выберите в списке результатов Найти в файлах.
В строке меню выберите Правка > Найти и заменить.
Во всплывающем меню выберите пункт Найти в файлах.
Чтобы отменить операцию поиска, нажмите клавиши CTRL+BREAK.
Средство поиска и замены не выполняет поиск в каталогах, для которых задан атрибут Hidden или System .
Найти
Чтобы найти новую текстовую строку или выражение, введите их в поле Найти.
поле поиска;
Чтобы найти новую текстовую строку или выражение, введите их в поле "Поиск". Для поиска любой из 20 строк, которые вы искали недавно, откройте раскрывающийся список и выберите нужную строку.
Можно выбрать или отключить указанные ниже параметры.
Учитывать регистр. Если выбрать этот параметр, поиск будет выполняться с учетом регистра.
Слово целиком. Если выбрать этот параметр, в результатах поиска будут только полностью совпадающие слова.
Использовать регулярные выражения. Этот параметр позволяет применять специальные обозначения, чтобы определить шаблоны текста для поиска соответствия в текстовых полях "Найти" или Заменить. Список этих обозначений см. в статье Использование регулярных выражений в Visual Studio.
Кнопка Построитель выражений отображается рядом с полем поиска, только если установлен флажок Использовать регулярные выражения.
Искать в
Пункт, выбранный в раскрывающемся списке Искать в, определяет, будет ли функция Найти в файлах выполнять поиск по всей рабочей области, по всему решению, по текущему проекту, текущему каталогу, всем открытым документам или текущему документу.
Можно также нажать кнопку Обзор (. ) рядом, чтобы выбрать место поиска. Более того, если вы уже указали каталог, с помощью этой кнопки вместо замены будет добавляться новый каталог. Например, если для параметра "Где искать" задано значение .\Code, можно нажать кнопку Обзор (. ) и перейти в папку с именем Shared Code. Теперь в поле Обзор (. ) будут отображаться папки .\Code и .\Shared Code. При выполнении команды "Найти" поиск будет выполняться в обеих этих папках.
Чтобы уточнить условия поиска, можно выбрать следующие параметры (или отменить их выбор):
- Include external items (Включить внешние элементы). Этот параметр позволяет включить внешние элементы, такие как "windows.h", на которые можно добавить ссылку, но которые не являются частью решения.
- Include miscellaneous files (Включить прочие файлы). Этот параметр позволяет включить прочие файлы, например открытые вами файлы, которые не являются частью решения.
Типы файлов
Параметр Типы файлов указывает типы файлов для поиска в каталогах Искать в. Выберите любой элемент в списке, чтобы ввести заранее заданную строку для поиска указанных типов файлов.
Можно выполнить поиск нескольких типов файлов, разделяя их точкой с запятой ( ; ). Можно также исключить папки и файлы, поставив перед любым путем или типом файла восклицательный знак ( ! ).
Добавить результаты
Используйте этот параметр, чтобы добавить результаты текущего поиска к результатам предыдущего.
поле поиска;
Чтобы найти новую текстовую строку или выражение, введите их в поле "Поиск". Для поиска любой из 20 строк, которые вы искали недавно, откройте раскрывающийся список и выберите нужную строку.
Можно выбрать или отключить указанные ниже параметры.
Учитывать регистр. Если выбрать этот параметр, поиск будет выполняться с учетом регистра.
Слово целиком. Если выбрать этот параметр, в результатах поиска будут только полностью совпадающие слова.
Использовать регулярные выражения. Этот параметр позволяет применять специальные обозначения, чтобы определить шаблоны текста для поиска соответствия в текстовых полях "Найти" или Заменить. Список этих обозначений см. в статье Использование регулярных выражений в Visual Studio.
Кнопка Построитель выражений отображается рядом с полем поиска, только если установлен флажок Использовать регулярные выражения.
Искать в
Пункт, выбранный в раскрывающемся списке Искать в, определяет, будет ли функция Найти в файлах выполнять поиск по всей рабочей области, по всему решению, по текущему проекту, текущему каталогу, всем открытым документам или текущему документу.
Можно также нажать кнопку Обзор (. ) рядом, чтобы выбрать место поиска. Более того, если вы уже указали каталог, с помощью этой кнопки вместо замены будет добавляться новый каталог. Например, если для параметра "Где искать" задано значение .\Code, можно нажать кнопку Обзор (. ) и перейти в папку с именем Shared Code. Теперь в поле Обзор (. ) будут отображаться папки .\Code и .\Shared Code. При выполнении команды "Найти" поиск будет выполняться в обеих этих папках.
Чтобы уточнить условия поиска, можно выбрать следующие параметры (или отменить их выбор):
- Include external items (Включить внешние элементы). Этот параметр позволяет включить внешние элементы, такие как "windows.h", на которые можно добавить ссылку, но которые не являются частью решения.
- Include miscellaneous files (Включить прочие файлы). Этот параметр позволяет включить прочие файлы, например открытые вами файлы, которые не являются частью решения.
Типы файлов
Параметр Типы файлов указывает типы файлов для поиска в каталогах Искать в. Выберите любой элемент в списке, чтобы ввести заранее заданную строку для поиска указанных типов файлов.
Можно выполнить поиск нескольких типов файлов, разделяя их точкой с запятой ( ; ). Можно также исключить папки и файлы, поставив перед любым путем или типом файла восклицательный знак ( ! ).
Добавить результаты
Используйте этот параметр, чтобы добавить результаты текущего поиска к результатам предыдущего.
Построитель выражений
Если в строке поиска нужно использовать регулярные выражения, нажмите рядом с полем поиска кнопку Построитель выражений. Дополнительные сведения см. в статье Использование регулярных выражений в Visual Studio.
Кнопка Построитель выражений включена, только если вы выбрали параметр Использовать регулярные выражения в области Параметры поиска.
Искать в
Этот параметр выбирается из раскрывающегося списка Искать в и определяет, будут ли команды Найти в файлах выполнять поиск только в активных в данный момент файлах или во всех файлах, сохраненных в заданной папке.
Выберите область поиска в списке или нажмите кнопку Обзор (. ), чтобы открыть диалоговое окно Выбор папок поиска и задать собственный набор каталогов. Можно также ввести путь непосредственно в поле Область поиска.
При выборе параметров Все решение или Текущий проект поиск в файлах проектов и решений не выполняется. Если вам требуется найти что-нибудь в файлах проекта, выберите папку поиска.
Если вы используете параметр Искать в для поиска файла, извлеченного из системы управления исходным кодом, найдена будет только версия файла, скачанная на локальный компьютер.
Включая вложенные папки
Указывает, что поиск будет выполняться во вложенных папках папки Область поиска.
Параметры поиска
Вы можете развернуть или свернуть раздел Параметры поиска. Можно выбрать или отключить указанные ниже параметры.
Учитывать регистр
Если этот флажок установлен, функция Результаты поиска будет учитывать регистр.
Слово целиком
Если этот флажок установлен, в окне Результаты поиска будут отображаться только полноценные соответствия слову.
Использование регулярных выражений
Если этот флажок установлен, вы можете использовать специальные обозначения, чтобы определить шаблоны текста для поиска соответствия в текстовых полях Найти или Заменить. Список этих обозначений см. в статье Использование регулярных выражений в Visual Studio.
Искать в файлах указанных типов
Этот список указывает типы файлов для поиска в каталогах Область поиска. Если это поле пусто, поиск будет выполняться по всем файлам в каталогах Область поиска.
Выберите любой элемент в списке, чтобы ввести заранее заданную строку для поиска указанных типов файлов.
Параметры результатов
Вы можете развернуть или свернуть раздел Параметры результатов. В разделе Выводить результаты в можно выбрать или отключить указанные ниже параметры.
Окно "Результаты поиска 1"
Если выбран этот параметр, результаты текущего поиска заменяют содержимое окна Результаты поиска 1. Это окно открывается автоматически и отображает результаты поиска. Чтобы открыть это окно вручную, выберите Другие окна в меню Вид и выберите Результаты поиска 1.
Окно "Результаты поиска 2"
Если выбран этот параметр, результаты текущего поиска заменяют содержимое окна Результаты поиска 2. Это окно открывается автоматически и отображает результаты поиска. Чтобы открыть окно вручную, выберите Другие окна в меню Вид и выберите Результаты поиска 2.
Между окнами результатов можно переключаться, нажимая клавиши ALT+1 или ALT+2.
Таблица результатов поиска
Результаты поиска отображаются в формате таблицы, а не в виде текстового списка.
Добавить результаты
Добавляет результаты поиска в результаты предыдущей операции поиска.
Отображать только имена файлов
Отображает список файлов, содержащих соответствия, а не сами совпадения.
Результаты поиска
При выполнении поиска результаты отображаются по мере того, как они становятся доступными.
Visual Studio начинает создавать индекс после загрузки контекста кода, например, при открытии нового проекта, изменении ветвей или изменении списка файлов. Если вы выполняете поиск, пока Visual Studio все еще индексирует исходные файлы, вы можете увидеть предупреждение о том, что результаты являются неполными.
Сохранение результатов
Вы можете сохранить результаты одной операции поиска, пока выполняете другие. Это позволяет без труда сравнивать результаты и просматривать их рядом друг с другом.
Чтобы сохранить несколько результатов поиска, нажимайте кнопку Сохранить результаты после каждой операции поиска. Затем, когда вы будете искать что-то еще, результаты отобразятся на новой вкладке. Вы можете сохранить до пяти результатов поиска. Если у вас уже есть пять результатов поиска, для следующей операции поиска будет использоваться самая старая вкладка результатов поиска.
В Visual Studio 2022 и более поздних версиях можно настроить Visual Studio на сохранение результатов. Последовательно выберите Сервис > Параметры > Общие > Поиск и замена и установите флажок Хранить результаты поиска по умолчанию.
Задача получения списка файлов или папок в другой папке часто бывает при написании программы, поэтому, чтобы рецепт всегда был под рукой, решил написать коротенькую статью.
Получить список файлов в папке
Для получения списка файлов можно воспользоваться методом GetFiles.
Пример поиска файлов:
Метод GetFiles может принимать 3 параметра, из которых первый обязательный:
GetFiles(String path, String pattern, SearchOption options)
path - путь к папке, в которой ищем файлы;
pattern - шаблон поиска файлов (например, *.txt или ??abc.doc);
options - способ поиска, указывающий нужно искать только в текущей папке (SearchOption.TopDirectoryOnly) или во вложенных тоже (SearchOption.AllDirectories).
Пример поиска файлов по шаблону смотрите ниже (рекурсивный поиск).
Метод EnumerateFiles так же может принимать 3 параметра:
path - путь к папке, в которой ищем файлы;
pattern - шаблон поиска файлов;
options - способ поиска.
Пример поиска файлов методом EnumerateFiles:
Как видим, поиск методом EnumerateFiles аналогичен GetFiles, однако, он начнется сразу, до получения всего списка файлов, что может быть актуальным при очень большом количестве файлов.
Получить список папок в папке
Для получения списка папок можно воспользоваться методом GetDirectories.
Пример поиска папок с помощью GetDirectories:
Метод GetDirectories может принимать 3 параметра, из которых первый обязательный:
GetDirectories(String path, String pattern, SearchOption options)
path - путь к папке, в которой ищем файлы;
pattern - шаблон поиска файлов (например, *.txt или ??abc.doc);
options - способ поиска, указывающий нужно искать только в текущей папке (SearchOption.TopDirectoryOnly) или во вложенных тоже (SearchOption.AllDirectories).
Метод EnumerateDirectories аналогично GetDirectories принимает 3 параметра:
path - путь к папке, в которой ищем файлы;
pattern - шаблон поиска файлов;
options - способ поиска.
Пример поиска папок с помощью EnumerateDirectories:
Примечание: Во всех способах получения файлов и папок можно во втором параметре указывать шаблон поиска pattern, однако в нем можно использовать только * (любое количество любых символов) и ? (один любой символ) для указания шаблона поиска, регулярные выражения не поддерживаются.
Получить список файлов по шаблону рекурсивно
В этом случае нужно лишь добавить 2-й параметр, в котором указываем маску файлов и 3-й параметр, означающий что нужно искать файлы так же во вложенных папках.
Однако, у этого способа есть недостаток - в случае, если в какую-то папку нет доступа, получится ошибка и список файлов не будет получен совсем.
Рекурсивно получить список всех файлов и папок
Этот пример рекурсивного поиска файлов и папок не прервется в случае ошибки, а продолжится дальше. Вместо массива здесь используется List для записи списка файлов и папок.
Плюсом такого рекурсивного поиска так же является то, что можно еще и контролировать уровень вложенности и делать, например, отступы для разных уровней.
Я пытаюсь создать программу, где я могу искать некоторые файлы в каталоге на моем ПК, используя Visual Studio C++. Поскольку я не очень разбираюсь в этом, я нашел этот код (ниже) в другом ответе, но не смог найти никакого объяснения коду. Мне сложно понять это, и я буду очень признателен за любую помощь.
Если будет другой способ сделать это, я буду рад узнать, как это сделать. Спасибо!
"Теперь вы можете получить имена файлов. Просто сравните имя файла.
Также вы можете использовать функцию scandir, которая может регистрировать функцию фильтра.
Лучшим способом сделать это, вероятно, будет использование новой библиотеки std::filesystem . directory_iterators позволяют вам просматривать содержимое каталога. Поскольку они являются просто итераторами, вы можете комбинировать их со стандартными алгоритмами, такими как std::find_if для поиска определенной записи:
Сначала мы создаем directory_iterator d для каталога, в котором мы хотим выполнить поиск. Затем мы используем std::find_if() чтобы просмотреть содержимое каталога и найти запись, которая соответствует имени файла, которое мы ищем. std::find_if() ожидает объект функции как последний аргумент, который применяется к каждому посещенному элементу и возвращает true если элемент соответствует тому, что мы ищем. std::find_if() возвращает итератор первому элементу, для которого эта предикатная функция возвращает значение true , иначе возвращается концевой итератор. Здесь мы используем лямбда как предикат, который возвращает true когда компонент имени файла пути записи каталога, который мы смотрим, соответствует искомому имени файла. Впоследствии мы сравниваем итератор, возвращаемый std::find_if() в конец итератора, чтобы узнать, нашли ли мы запись или нет. В случае, если мы найдем запись, *found будет оценивать directory_entry представляющий соответствующий объект файловой системы.
Обратите внимание, что для этого потребуется последняя версия Visual Studio 2017. Не забудьте установить стандарт языка в /std:C++17 или /std:C++latest в свойствах проекта (C++/Язык).
Оба метода используют функцию find для std::string :
Это ищет "abc" в строке fname . Если он обнаружил, что возвращает индекс, на котором он начинается, в противном случае он извлекает std::string::npos , поэтому они оба проверяют эту подстроку.
Вы можете посмотреть, есть ли у вас точное совпадение, вместо этого используйте == . Это зависит.
Если соответствующее имя файла найдено, оно возвращается в вектор. Ваша основная функция
который он не использует. Я подозреваю, что пришел с копией/вставкой.
Вы можете использовать диапазон, основанный for цикле, чтобы узнать, что в вашем векторе:
Функция filter также проверяет "." и ".." так как они имеют особые значения - текущую директорию и одну директорию. В этот момент API C API возвратил char * , поэтому они используют strcmp , а не std :: string.
использует n который вы еще не объявили. Пытаться
Кроме того, это использует dir_path который требует объявления где-то.
Для быстрого исправления попробуйте
(или любой другой путь, который вы хотите, наблюдая за тем, чтобы избежать обратных косых черт с дополнительной обратной косой чертой.
Читайте также: