programing

출력 파일 이름, select-string이 있는 문자열이 아님

powerit 2023. 8. 21. 21:41
반응형

출력 파일 이름, select-string이 있는 문자열이 아님

특정 문자열에 대한 소스 코드를 "grep"하기 위해 powershell을 사용하고 있습니다.파일에 문자열이 있으면 해당 문자열이 포함된 코드 줄이 아닌 파일 이름을 원합니다.

파일 이름도 파일이 존재하는 횟수만큼 나열되지 않고 한 번만 알고 싶습니다.

현재 사용 중:

gci . -include "*.sql" -recurse | select-string -pattern 'someInterestingString'

이제 저는 select-string의 출력이 일종의 oobject라는 것을 이해했습니다. 그리고 제가 콘솔에서 보고 있는 것은, 제가 추측하기로는,ToString()그 물건의.제 생각에 제가 할 수 있는 일은format-table선택 문자열의 출력을 제어하기 위해, 그리고 내 생각에.sort고유한 값만 얻을 수 있습니다.

하지만 그것은 많은 추측입니다.

저는 당신이 무엇을 하려고 하는지 완전히 이해하지 못하는 것 같습니다.출력을 파일별로 그룹화하려면 다음으로 연결할 수 있습니다.Format-Table와 함께-GroupBy매개변수:

gci . -include "*.sql" -recurse `
    | select-string -pattern 'someInterestingString' `
    | Format-Table -GroupBy Path

다른 정보 없이 일치하는 파일 이름만 가져오려면 다음을 사용할 수 있습니다.Select-Object와 함께-Unique매개변수:

gci . -include "*.sql" -recurse `
    | select-string -pattern 'someInterestingString' `
    | Select-Object -Unique Path

파일 이름에만 관심이 있는 경우 이름이 계층에 여러 번 나타나는지 여부에 관계없이 파일 이름만 선택할 수 있습니다.Filename재산 대신에.


참고: TheGet-Membercmdlet은 개체에 존재하는 속성을 파악하는 데 큰 도움이 됩니다.

gci . -include "*.sql" -recurse `
    | select-string -pattern 'someInterestingString' `
    | Get-Member

별칭을 사용할 수도 있습니다.gm대신.

이 작업을 수행할 때 -List 매개 변수를 사용하면 코드 줄이 표시되지만 파일당 한 줄만 표시됩니다(일치 항목 수에 관계없이).

PS> Get-ChildItem . -r *.cs | Select-String XmlNode -list

Commands\SnapinHelp\CmdletInfo.cs:27:        public List<XmlNode> InputTypes;
Commands\SnapinHelp\GetSnapinHelpCommand.cs:124:            WriteXmlNodeList(c...
Commands\SnapinHelp\ParameterInfo.cs:73:        XmlNode FindNode(XmlDocument doc)
Commands\Xml\XmlCommandBase.cs:65:            RegisterInputType<XmlNode>(Proce...

경로를 원하는 경우:

PS> Get-ChildItem . -r *.cs | Select-String XmlNode -list | 
    Format-Table Path

Path
--------
C:\Users\Keith\Pscx\Src\PscxSnapin\Commands\SnapinHelp\CmdletInfo.cs
C:\Users\Keith\Pscx\Src\PscxSnapin\Commands\SnapinHelp\GetSnapinHelpCommand.cs
C:\Users\Keith\Pscx\Src\PscxSnapin\Commands\SnapinHelp\ParameterInfo.cs
C:\Users\Keith\Pscx\Src\PscxSnapin\Commands\Xml\XmlCommandBase.cs

또는 파일 이름만 원하는 경우:

PS> Get-ChildItem . -r *.cs | Select-String XmlNode -list | 
    Format-Table Filename

Filename
--------
CmdletInfo.cs
GetSnapinHelpCommand.cs
ParameterInfo.cs
XmlCommandBase.cs

하는 것이 더 쉽다는 것을 알았습니다.

(...|select-string "search").Path

언급URL : https://stackoverflow.com/questions/1499575/output-filename-not-string-with-select-string

반응형