Um guia prático para localizar arquivos de texto, scripts, logs, arquivos de configuração e arquivos de código-fonte que não incluem uma palavra, frase, parâmetro ou linha obrigatória.
O método nativo mais confiável é o PowerShell. Abra o Windows Terminal ou o PowerShell, altere o caminho da pasta e execute este comando:
PowerShell$folder = "C:\Users\User\Documents"
$text = "texto obrigatório"
Get-ChildItem -Path $folder -Recurse -File |
Where-Object {
-not (Select-String -Path $_.FullName -Pattern $text -SimpleMatch -Quiet)
} |
Select-Object FullName
$text.
Select-String é o comando do PowerShell criado para pesquisar texto dentro de arquivos. Com -Quiet, ele retorna apenas se existe uma correspondência. Ao adicionar -not, o resultado é invertido, então o Windows lista os arquivos nos quais o texto não foi encontrado.
Esse tipo de pesquisa é diferente de uma pesquisa normal por nome de arquivo. O Windows precisa abrir cada arquivo candidato, ler seu conteúdo e verificar se o texto exigido existe dentro dele.
.ini, .conf e .json.html, .css e .jsUse este método quando precisar de uma lista limpa de arquivos que não contêm uma palavra, parâmetro, tag, nome de classe, domínio ou outro fragmento exato.
$folder pela pasta que você deseja verificar.$text pela palavra ou fragmento que você deseja localizar como ausente.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
Neste exemplo, o PowerShell lista os arquivos dentro de D:\Articles que não contêm o texto canonical.
Para uma frase exata, mantenha -SimpleMatch. Ele instrui o Select-String a tratar o texto pesquisado como texto literal, e não como expressão regular.
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 ao pesquisar texto normal, como um título, uma classe CSS, um rótulo de menu ou um nome de domínio. Sem ele, caracteres como pontos, colchetes e pontos de interrogação podem ser interpretados como sintaxe de expressão regular.
Para pastas grandes, filtre primeiro as extensões de arquivo. Isso torna a pesquisa mais rápida e evita muitos arquivos binários.
*.html
Logs: *.log
Scripts: *.ps1
Arquivos de texto: *.txt
PowerShell — uma extensão$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
Para verificar várias extensões, use -Include junto com um caminho curinga:
PowerShell — várias extensões$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, use um caminho curinga como D:\Site\*. Caso contrário, o PowerShell pode não aplicar o filtro de inclusão da forma esperada.
Por padrão, Select-String não diferencia maiúsculas de minúsculas. Se você precisa distinguir entre Error, ERROR e error, adicione -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
Este comando lista arquivos .log que não contêm a string exata em maiúsculas ERROR.
Ao pesquisar em projetos, muitas vezes é necessário ignorar pastas de cache, dependências, compilação ou controle de versão. Você pode filtrá-las verificando o caminho completo antes de analisar cada arquivo.
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
Isso é útil para pastas de sites, projetos de software, documentação exportada e grandes arquivos de texto organizados em pastas.
O findstr consegue encontrar arquivos que contêm texto, mas não gera diretamente uma lista limpa de “arquivos sem este texto” em pesquisas recursivas. Uma solução nativa prática é criar duas listas e compará-las com PowerShell.
Use dir para listar os arquivos com a extensão que você deseja verificar.
Use findstr com /m para listar os arquivos nos quais o texto existe.
Use o PowerShell para exibir os arquivos presentes na primeira lista, mas ausentes da segunda.
Prompt de Comandocd /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 se você já estiver trabalhando no Prompt de Comando. Para novas tarefas, o método puro com PowerShell é mais curto e mais fácil de manter.
O Explorador de Arquivos não é a melhor ferramenta para esta tarefa. Ele pode pesquisar nomes de arquivos e conteúdo indexado, mas uma pesquisa recursiva confiável do tipo “mostre os arquivos cujo conteúdo não inclui este texto” é melhor feita com PowerShell.
| Ferramenta | Bom para | Ponto fraco |
|---|---|---|
| Explorador de Arquivos | Pesquisar rapidamente nomes de arquivos e conteúdo indexado. | Não é confiável para uma auditoria completa de conteúdo “sem determinado texto”. |
| PowerShell | Analisar recursivamente o conteúdo real dos arquivos e filtrar resultados. | Exige um comando e pode ser lento em pastas muito grandes. |
findstr |
Pesquisas simples no Prompt de Comando em arquivos de texto puro. | Menos conveniente para pesquisas inversas e filtros complexos. |
Se você só precisa de arquivos que contêm uma palavra, o Explorador de Arquivos pode ser suficiente. Se você precisa de arquivos em que essa palavra está ausente, use o PowerShell.
Pesquise primeiro dentro das suas próprias pastas de documentos, projetos ou sites. Evite verificar toda a unidade C:\, a menos que você abra o PowerShell como administrador e esteja preparado para erros em pastas protegidas.
PowerShell — suprimir erros de acesso e leituraGet-ChildItem -Path "C:\Users\User\Documents" -Recurse -File -ErrorAction SilentlyContinue |
Where-Object {
-not (Select-String -Path $_.FullName -Pattern "texto obrigatório" -SimpleMatch -Quiet -ErrorAction SilentlyContinue)
} |
Select-Object FullName
-Filter ou -Include para limitar as extensões de arquivo.Mantenha -SimpleMatch ativado. Isso é especialmente importante para fragmentos de texto como URLs, seletores CSS, strings parecidas com Registro, trechos de código e nomes de arquivos com pontos.
Select-String e inverter a correspondência com -not.
$patterns = "word1", "word2", e passe $patterns para -Pattern. Se você precisa de arquivos que não tenham todas as palavras obrigatórias ou que não tenham qualquer uma delas, ajuste a lógica conforme necessário.
Select-String foi criado para fluxos de texto e arquivos de texto puro. PDF, DOCX e formatos semelhantes exigem análise especializada ou ferramentas de pesquisa específicas.
.txt, .log, .html, .css, .js, .xml e .json.
| Out-File missing-text-files.txt -Encoding UTF8 ao final do comando do PowerShell para salvar a lista.
Para encontrar arquivos que não contêm um texto específico no Windows, use PowerShell com Select-String. Ele oferece controle direto sobre a pasta, extensões de arquivo, correspondência de frases, diferenciação entre maiúsculas e minúsculas e pastas excluídas.
Use o Explorador de Arquivos para pesquisas rápidas por nome ou conteúdo indexado, mas use o PowerShell quando precisar de uma lista confiável de arquivos em que uma palavra, frase, título, tag ou linha de configuração obrigatória está ausente.