Найти упоминание о Google во всех файлах и подкаталогах? - PullRequest
0 голосов
/ 15 марта 2020

Я пробовал разные версии этой команды, надеясь получить удар. Я поместил пустой текстовый документ / файл, который содержал только строку «google», и выполнил такие команды:

findstr /S "google" ./ findstr /S "*google*" ./ findstr /S ".google." .\ findstr /S /C:"google" c:\my\directory

Что я думаю, что мне может понадобиться труба выходной формат?

Пожалуйста, скажите, в общем, что я делаю не так и как я могу сделать это правильно?

Ответы [ 3 ]

0 голосов
/ 15 марта 2020

Для PowerShell это может быть:

Get-ChildItem -Path 'D:\Test' -File -Recurse | 
    Select-String -Pattern 'google' -SimpleMatch | 
    Select-Object Path, LineNumber, Line  # properties you want returned

Это вернет

Path                          LineNumber Line            
----                          ---------- ----            
D:\Test\SomeOtherTextFile.txt          6 google          
D:\Test\test.txt                       1 google          
D:\Test\Blah\blah.txt                  3 find stuff with Google
0 голосов
/ 15 марта 2020

Что касается findstr, я бы добавил / i, чтобы вызвать нечувствительность к регистру. Для работы не нужно просто перенаправлять вывод, просто выводится на экран. / s будет искать текущий каталог и все подкаталоги. Если вы укажете каталог, он будет искать этот каталог и все его подкаталоги:

findstr /i /s "google" .\*

Кажется, что требуется "*".

findstr /i /s "google" c:\temp\* 

Я провел некоторое тестирование перед публикацией и кажется, что если вы не укажете c «*», он просто будет работать вечно.

Что касается перенаправления вывода, мой первый инстинкт должен был использовать или «>>» для перенаправления stderr и добавления в файл. Однако, это, кажется, не уважает окончания строки! Вывод выполняется в виде одной строки.

С помощью чистого PowerShell вы можете использовать вместо него Get-ChildItem с Select-String & Out-File.

Get-ChildItem -Recurse -File | 
Select-String -pattern "google" | 
Out-File c:\temp\select-String-test.txt -Append

Если вы начинаете поиск в root из c: \ вы неизбежно получите какие-то кроваво-красные ошибки, запрещающие доступ. Обычно меня не волнуют эти файлы, поэтому я добавлю -ErrorAction SilentlyContinue

Надеюсь, это поможет.

0 голосов
/ 15 марта 2020

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

Например:

findstr /S "google" test_file.txt

Чтобы выполнить поиск во всех файлах в папке, добавьте *.

Например:

findstr /S "google" ./*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...