Поиск Windows · Встроенные средства

Как найти файлы, в которых нет заданного текста, средствами Windows

Практическое руководство для поиска текстовых файлов, скриптов, журналов, конфигураций и исходных файлов, в которых отсутствует нужное слово, фраза, параметр или строка.

⊞ Windows 10 ⊞ Windows 11 PowerShell Командная строка Только встроенные средства

Быстрый ответ: используйте PowerShell, чтобы найти файлы без заданной строки текста

Самый надежный встроенный способ — PowerShell. Откройте Windows Terminal или PowerShell, измените путь к папке и выполните команду:

PowerShell$folder = "C:\Users\User\Documents"
$text = "required text"

Get-ChildItem -Path $folder -Recurse -File |
Where-Object {
    -not (Select-String -Path $_.FullName -Pattern $text -SimpleMatch -Quiet)
} |
Select-Object FullName
В результате будут показаны файлы, которые были проверены, но не содержат текст, указанный в переменной $text.
ℹ️
Лучший вариант для большинства пользователей Select-String — команда PowerShell для поиска текста внутри файлов. Параметр -Quiet возвращает только факт наличия совпадения. Оператор -not инвертирует результат, поэтому Windows выводит файлы, в которых текст не найден.

Что означает поиск файлов, которые не содержат текст, в Windows

Такой поиск отличается от обычного поиска по имени файла. Windows должна открыть каждый подходящий файл, прочитать его содержимое и проверить, есть ли внутри нужный текст.

📄 Лучше всего работает с TXT, LOG, CSV, HTML, CSS, JS, XML, скриптами
⚠️ Будьте осторожны с PDF, DOCX, архивами, базами данных, бинарными файлами
🧰 Рекомендуемый инструмент PowerShell
Правило: сначала ограничьте поиск теми типами файлов, которые действительно являются текстовыми. Поиск по всему диску без фильтров может быть медленным и часто дает ошибки на защищенных или бинарных файлах.

Подходящие файлы

  • Файлы конфигурации, например .ini, .conf и .json
  • Файлы сайта, например .html, .css и .js
  • Журналы, скрипты, списки, экспорты и файлы исходного кода

Неподходящие файлы

  • Изображения, видео, исполняемые файлы и сжатые архивы
  • Документы Office, если требуется точный поиск по форматированному тексту документа
  • Системные папки, где доступ запрещен или файлы заблокированы

Как найти файлы, которые не содержат слово, с помощью PowerShell

Используйте этот способ, когда нужен чистый список файлов, в которых отсутствует одно слово, параметр, тег, имя класса, домен или другой точный фрагмент.

  1. Щелкните правой кнопкой мыши по Пуск и откройте Терминал или PowerShell.
  2. Замените путь к папке в $folder на папку, которую нужно проверить.
  3. Замените значение в $text на слово или фрагмент, отсутствие которого нужно найти.
  4. Выполните команду и проверьте получившийся список путей к файлам.
PowerShell$folder = "D:\Articles"
$text = "canonical"

Get-ChildItem -Path $folder -Recurse -File |
Where-Object {
    -not (Select-String -Path $_.FullName -Pattern $text -SimpleMatch -Quiet)
} |
Select-Object FullName

В этом примере PowerShell выводит файлы в папке D:\Articles, которые не содержат текст canonical.

Как найти файлы, которые не содержат точную фразу в Windows

Для точной фразы оставьте параметр -SimpleMatch. Он сообщает Select-String, что поисковый текст нужно обрабатывать как обычный текст, а не как регулярное выражение.

PowerShell$folder = "C:\Users\User\Desktop\Pages"
$text = "Table of contents"

Get-ChildItem -Path $folder -Recurse -File |
Where-Object {
    -not (Select-String -Path $_.FullName -Pattern $text -SimpleMatch -Quiet)
} |
Select-Object FullName
Почему это безопаснее Используйте -SimpleMatch при поиске обычного текста: заголовка, CSS-класса, пункта меню или доменного имени. Без этого параметра точки, скобки, вопросительные знаки и другие символы могут восприниматься как синтаксис регулярного выражения.

Ограничьте поиск определенными типами файлов

Для больших папок сначала отфильтруйте расширения файлов. Это ускоряет поиск и исключает множество бинарных файлов.

Файлы сайта: *.html Журналы: *.log Скрипты: *.ps1 Текстовые файлы: *.txt
PowerShell — одно расширение$folder = "D:\Site"
$text = "style2.css"

Get-ChildItem -Path $folder -Recurse -File -Filter *.html |
Where-Object {
    -not (Select-String -Path $_.FullName -Pattern $text -SimpleMatch -Quiet)
} |
Select-Object FullName

Чтобы проверить несколько расширений, используйте -Include вместе с путем с подстановочным знаком:

PowerShell — несколько расширений$folder = "D:\Site\*"
$text = "text-mark"

Get-ChildItem -Path $folder -Recurse -File -Include *.html,*.css,*.js |
Where-Object {
    -not (Select-String -Path $_.FullName -Pattern $text -SimpleMatch -Quiet)
} |
Select-Object FullName
⚠️
Важно С параметром -Include используйте путь с подстановочным знаком, например D:\Site\*. Иначе PowerShell может применить фильтр включения не так, как ожидается.

Как выполнить поиск отсутствующего текста с учетом регистра

По умолчанию Select-String не учитывает регистр. Если нужно различать Error, ERROR и error, добавьте -CaseSensitive.

PowerShell$folder = "C:\Logs"
$text = "ERROR"

Get-ChildItem -Path $folder -Recurse -File -Filter *.log |
Where-Object {
    -not (Select-String -Path $_.FullName -Pattern $text -SimpleMatch -CaseSensitive -Quiet)
} |
Select-Object FullName

Эта команда выводит файлы .log, которые не содержат точную строку в верхнем регистре ERROR.

Исключите папки node_modules, .git, bin или obj

При поиске в проектах часто нужно пропустить папки кэша, зависимостей, сборки или контроля версий. Их можно исключить, проверяя полный путь перед сканированием каждого файла.

PowerShell$folder = "D:\Project"
$text = "apiKey"
$excluded = "\node_modules\", "\.git\", "\bin\", "\obj\"

Get-ChildItem -Path $folder -Recurse -File -Include *.js,*.json,*.html,*.css |
Where-Object {
    $file = $_.FullName
    -not ($excluded | Where-Object { $file -like "*$_*" })
} |
Where-Object {
    -not (Select-String -Path $_.FullName -Pattern $text -SimpleMatch -Quiet)
} |
Select-Object FullName

Это удобно для папок сайтов, программных проектов, экспортированной документации и больших архивов текстовых файлов.

Как найти файлы без заданного текста через Командную строку и findstr

findstr умеет находить файлы, которые содержат текст, но не формирует напрямую удобный список «файлов без этого текста» при рекурсивном поиске. Практичный обходной вариант со встроенными средствами — создать два списка и сравнить их через PowerShell.

Шаг 1

Создайте список всех подходящих файлов

Используйте dir, чтобы вывести файлы с нужным расширением.

Шаг 2

Создайте список файлов с совпадением

Используйте findstr с параметром /m, чтобы получить файлы, где текст найден.

Шаг 3

Сравните оба списка

Используйте PowerShell, чтобы вывести файлы, которые есть в первом списке, но отсутствуют во втором.

Командная строкаcd /d D:\Articles

dir /b /s *.html > all-files.txt
findstr /m /s /i /c:"Table of contents" *.html > files-with-text.txt
powershell -NoProfile -Command "$all=Get-Content .\all-files.txt; $yes=Get-Content .\files-with-text.txt; Compare-Object $all $yes | Where-Object SideIndicator -eq '<=' | Select-Object -ExpandProperty InputObject"
💡
Когда использовать этот способ Используйте метод с findstr, если уже работаете в Командной строке. Для новых задач чистый способ на PowerShell короче и проще в поддержке.

Можно ли найти файлы, которые не содержат текст, в Проводнике?

Проводник — не лучший инструмент для этой задачи. Он может искать имена файлов и индексированное содержимое, но надежный рекурсивный поиск «покажи файлы, в содержимом которых нет этого текста» лучше выполнять через PowerShell.

Инструмент Для чего подходит Слабое место
Проводник Быстрый поиск по именам файлов и индексированному содержимому. Ненадежен для полной проверки содержимого на отсутствие текста.
PowerShell Рекурсивное сканирование реального содержимого файлов и фильтрация результатов. Требует команды и может работать медленно на очень больших папках.
findstr Простой поиск из Командной строки по обычным текстовым файлам. Менее удобен для обратного поиска и сложной фильтрации.

Если нужны только файлы, которые содержат слово, Проводника может быть достаточно. Если нужны файлы, где этого слова нет, используйте PowerShell.

Решение проблем при поиске файлов без заданного текста в PowerShell

Ошибки доступа

Сначала ищите в собственных папках документов, проектов или сайтов. Не сканируйте весь диск C:\, если PowerShell не запущен от имени администратора и вы не готовы к ошибкам на защищенных папках.

PowerShell — скрыть ошибки доступа и чтенияGet-ChildItem -Path "C:\Users\User\Documents" -Recurse -File -ErrorAction SilentlyContinue |
Where-Object {
    -not (Select-String -Path $_.FullName -Pattern "required text" -SimpleMatch -Quiet -ErrorAction SilentlyContinue)
} |
Select-Object FullName

Команда выполняется слишком долго

Текст содержит специальные символы

Оставьте включенным параметр -SimpleMatch. Это особенно важно для фрагментов вроде URL-адресов, CSS-селекторов, строк, похожих на ключи реестра, фрагментов кода и имен файлов с точками.

FAQ: поиск файлов, которые не содержат текст, в Windows

Q Какой встроенный инструмент Windows лучше всего подходит для поиска файлов без заданного текста?
PowerShell — лучший встроенный инструмент, потому что он может рекурсивно перечислять файлы, читать их содержимое через Select-String и инвертировать совпадение с помощью -not.
Q Можно ли искать сразу несколько отсутствующих слов?
Да. В простых случаях поместите несколько шаблонов в массив, например $patterns = "word1", "word2", и передайте $patterns в -Pattern. Если нужны файлы, где отсутствуют все обязательные слова, или файлы, где отсутствует хотя бы одно из них, измените логику проверки соответственно.
Q Работает ли это с PDF или документами Word?
С простыми командами из этой статьи — ненадежно. Select-String предназначен для текстовых потоков и обычных текстовых файлов. PDF, DOCX и похожие форматы требуют специализированного разбора или отдельных поисковых инструментов.
Q Почему в некоторых файлах появляются нечитаемые результаты или ложные совпадения?
Файл может быть бинарным, сжатым, зашифрованным, иметь другую кодировку или вообще не быть обычным текстовым файлом. Ограничьте поиск известными текстовыми расширениями, например .txt, .log, .html, .css, .js, .xml и .json.
Q Можно ли сохранить результат в текстовый файл?
Да. Добавьте | Out-File missing-text-files.txt -Encoding UTF8 в конец команды PowerShell, чтобы сохранить список.

Итоги

Чтобы найти файлы, которые не содержат заданный текст, используйте PowerShell с Select-String. Этот способ дает прямой контроль над папкой, расширениями файлов, точным совпадением фразы, учетом регистра и исключенными папками.

Используйте Проводник для быстрых поисков по имени или индексированному содержимому, но выбирайте PowerShell, когда нужен надежный список файлов, где отсутствует обязательное слово, фраза, заголовок, тег или строка конфигурации.