답변:
Select-String
파일 내부의 텍스트를 검색 Select-Object
하고 각 일치 항목에 대한 특정 속성을 반환 하는 데 사용할 수 있습니다 . 이 같은:
Get-ChildItem -Recurse *.* | Select-String -Pattern "foobar" | Select-Object -Unique Path
또는 별명을 사용하는 더 짧은 버전 :
dir -recurse *.* | sls -pattern "foobar" | select -unique path
그냥 파일 이름이 아닌 전체 경로를 원하는 경우, 교체 Path
와 함께 Filename
.
Get-ChildItem
-Recurse *.*
현재 디렉토리의 모든 파일과 모든 하위 디렉토리를 반환합니다.
Select-String
-Pattern "foobar"
주어진 패턴 "foobar"에 대해 해당 파일을 검색합니다.
Select-Object
-Unique Path
각 일치에 대한 파일 경로 만 반환합니다. 이 -Unique
매개 변수는 중복을 제거합니다.
powershell v1.0 및 v2.0에서는 작업 할 첫 번째 위치 매개 변수 (경로)를 지정해야합니다. -Recursion
재발
지정된 위치와 해당 위치의 모든 하위 항목에있는 항목을 가져옵니다.
Windows PowerShell 2.0 및 이전 버전의 Windows PowerShell에서 Recurse 매개 변수는 Path 매개 변수의 값이 C : \ Windows 또는 C : \ Windows *와 같은 자식 항목이있는 컨테이너 인 경우에만 작동합니다. C : \ Windows * .exe와 같은 하위 항목이 없습니다.
"grep"을 수행하려는 디렉토리 내에서 아래 명령을 사용하고 [SEARCH_PATTERN]
일치 시키려는 항목과 일치하도록 변경하십시오 . 재귀 적이며 디렉토리의 모든 파일을 검색합니다.
dir -Recurse | Select-String - pattern [SEARCH_PATTERN]
Select-String 에는 -List
이 목적을위한 매개 변수가 있습니다.
각 입력 파일에서 첫 번째 일치 항목 만 반환하십시오. 기본적으로 Select-String은 발견 된 각 일치에 대해 MatchInfo 개체를 반환합니다.
— ss64.com
다음과 같이 사용할 수 있습니다.
gci -Recurse | sls -List FOOBAR
샘플 결과는 다음과 같습니다 (Windows SDK 검색 ERROR_SUCCESS
).
shared\bthdef.h:576:#define BTH_ERROR(_btStatus) ((_btStatus) != BTH_ERROR_SUCCESS)
shared\netioapi.h:2254: ERROR_SUCCESS on success. WIN32 error code on error.
shared\rpcnterr.h:34:#define RPC_S_OK ERROR_SUCCESS
shared\winerror.h:214:// MessageId: ERROR_SUCCESS
um\advpub.h:40:// ERROR_SUCCESS_REBOOT_REQUIRED Reboot required.
um\bluetoothapis.h:243:// ERROR_SUCCESS
um\ClusApi.h:571:_Success_(return == ERROR_SUCCESS)
um\dsparse.h:102:_Success_(return == ERROR_SUCCESS)
um\eapmethodpeerapis.h:228:// If the function succeeds, it returns ERROR_SUCCESS. Otherwise, it is
um\eappapis.h:56:// If the functions succeed, they return ERROR_SUCCESS. Otherwise, it is
um\MapiUnicodeHelp.h:583: if ((hkeyPolicy && RegQueryValueExW(hkeyPolicy, szName, 0, &dwType, (LPBYTE)
&dwLcid, &dwSize) == ERROR_SUCCESS && dwType == REG_DWORD) ||
um\Mddefw.h:127: routine will return ERROR_SUCCESS and the inherited data even if
um\Msi.h:1693:// Returns ERROR_SUCCESS if file is a package.
um\MsiQuery.h:192:// Returns ERROR_SUCCESS if successful, and the view handle is returned,
um\msports.h:46: ERROR_SUCCESS if the dialog was shown
um\ncryptprotect.h:164: ERROR_SUCCESS
um\NTMSAPI.h:1761:_Success_ (return == ERROR_SUCCESS)
um\oemupgex.h:108:// Returns: ERROR_SUCCESS in case of success, win32 error otherwise
um\PatchWiz.h:90:// ERROR_SUCCESS, plus ERROR_PCW_* that are listed in constants.h.
um\Pdh.h:415:_Success_(return == ERROR_SUCCESS)
FileInfo
상대 경로와 단일 일치 결과 대신 실제 객체를 다시 가져 오려면 다음과 같이 사용할 수 있습니다.
Get-ChildItem -Recurse -File | where { Select-String -Path $_ -List -Pattern FOOBAR }
select -Unique
... 시원하고 새로운 것을 배웠습니다. 고마워요!