Поиск 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, когда нужен надежный список файлов, где отсутствует обязательное слово, фраза, заголовок, тег или строка конфигурации.