PowerShell을 사용하여 파일에 특정 문자열이 포함되어 있는지 확인하는 방법
-
PowerShell에서
Select-String
을 사용하여 파일이 특정 문자열을 포함하는지 확인하기 -
PowerShell에서
Get-Content
를 사용하여 파일이 특정 문자열을 포함하는지 확인하기 - 특정 문자열을 포함하는 여러 파일 확인하기
- 결론

특정 문자열을 텍스트 파일 내에서 검색하는 것은 Windows PowerShell 작업 시 일반적인 작업입니다. Unix와 Linux 환경에서는 믿을 수 있는 grep
명령을 사용하는 반면, PowerShell은 Select-String
, Get-Content
및 Get-ChildItem
cmdlet을 사용하여 대안적인 접근 방식을 제공합니다.
이 기사에서는 PowerShell을 사용하여 텍스트 파일에서 문자열을 찾는 다양한 방법을 탐구할 것입니다.
PowerShell에서 Select-String
을 사용하여 파일이 특정 문자열을 포함하는지 확인하기
우리 기계에 Demo.txt
파일이 있다고 가정하고, 그 안에서 문자열 Demonstration
을 찾고 싶습니다.
다음은 이를 수행하는 PowerShell 스크립트입니다:
Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern 'Demonstration'
이 스크립트에서는 Select-String
을 사용하여 -Path
매개변수로 파일의 위치를 지정하고 -Pattern
매개변수로 우리가 찾고 있는 문자열을 지정합니다.
파일이 지정된 패턴('Demonstration'
)을 포함하고 있으면, 콘솔은 파일 이름, 줄 번호, 문자열이 포함된 줄을 출력합니다.
출력:
C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
위의 출력은 전체 경로가 포함된 Demo.txt
파일과 우리의 문자열이 포함된 줄(줄 1
) 및 문자열 자체(This is purely for demonstration
)를 보여줍니다.
파일이 문자열을 포함하는지 여부만 알면 되는 경우에는 스크립트를 다음과 같이 수정할 수 있습니다:
$Knw = Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern "Demonstration"
if ($Knw -ne $null) {
echo Contains String
}
else {
echo Does not Contain String
}
이 스크립트에서 $Knw
라는 변수를 정의하였으며, 이는 Select-String
을 사용하여 지정된 경로에 있는 파일에서 검색된 문자열 "Demonstration"
의 결과를 포함합니다. 그런 다음, 변수 $Knw
가 $null
이 아닌지 확인하여 파일에서 일치하는 항목이 발견되었음을 의미합니다.
일치하는 항목이 발견되면 "Contains String."
을 출력하고, 발견되지 않으면 "Does not Contain String."
을 출력합니다.
출력:
Contains String
파일이 "Demonstration"
패턴을 포함하고 있으므로, 출력은 Contains String
이 표시됩니다.
PowerShell에서 Get-Content
를 사용하여 파일이 특정 문자열을 포함하는지 확인하기
Get-Content
는 지정된 경로의 파일 내용을 가져오고 파일 내용을 읽어 문자열 객체를 반환하는 cmdlet입니다. Demo.txt
파일에서 Get-Content
를 사용하려면 아래의 스크립트를 사용할 것입니다:
Get-Content -Path C:\Users\pc\Demo\Demo.txt | Select-String -Pattern "Demonstration"
이 스크립트에서는 Get-Content
를 사용하여 -Path
매개변수로 지정된 Demo.txt
파일의 내용을 읽고, 그 결과를 Select-String
명령으로 전달하여 -Pattern
매개변수를 사용하여 Demonstration
문자열을 찾습니다.
출력:
This purely for demonstration
문자열의 존재 여부만 확인하고 싶은 경우, 아래의 스크립트를 사용할 수 있습니다:
If (Get-Content C:\Users\pc\Demo\Demo.txt | % { $_ -match "Demonstration" }) {
echo Contains String
}
else {
echo Does not Contains String
}
이 스크립트에서는 Get-Content
를 사용하여 C:\Users\pc\Demo\Demo.txt
에 위치한 파일의 데이터를 읽고, 파이프라인(|
)을 통해 파일의 각 줄을 하나씩 처리합니다. %{}
블록 내부에서는 -match
연산자를 사용하여 각 줄이 문자열 "Demonstration"
을 포함하는지 확인합니다.
파일의 어느 한 줄이라도 "Demonstration"
을 포함하고 있다면 "Contains String"
을 출력하고, 포함되지 않으면 "Does not Contains String"
을 출력합니다.
출력:
Contains String
파일이 지정된 문자열("Demonstration"
)을 포함하고 있으므로, 우리는 Contains String
을 출력으로 받습니다.
특정 문자열을 포함하는 여러 파일 확인하기
50개 이상의 텍스트 파일이 있고, 그 모든 파일에서 문자열을 검색하려고 한다고 가정해 봅시다. 이를 수행하는 두 가지 방법에 대해 논의할 것입니다.
PowerShell에서 Get-ChildItem
및 Search-String
사용하기
우리는 Get-ChildItem
과 Select-String
cmdlet을 사용할 수 있습니다. Get-ChildItem
cmdlet은 검색 기준에 따라 하나 이상의 파일을 찾습니다.
예를 들어 보겠습니다. Demo
폴더에 50개 이상의 텍스트 파일이 있다고 가정하고, 이 스크립트를 사용하여 그 모든 파일에서 문자열 Demonstration
을 검색할 수 있습니다:
Get-ChildItem -Path C:\Users\pc\Demo\ -Recurse | Select-String -Pattern 'Demonstration'
이 스크립트에서는 지정된 디렉터리(-Path
)와 하위 디렉터리(-Recurse
)에서 파일 목록을 나열하기 위해 Get-ChildItem
을 사용합니다. 파이프 연산자(|
)는 파일 목록을 Select-String
cmdlet에 전달합니다.
마지막으로, 우리는 각 파일에서 특정 패턴인 'Demonstration'
을 검색하기 위해 Select-String
을 사용합니다.
콘솔은 문자열을 포함하고 있는 파일 이름, 줄 번호, 그리고 문자열이 포함된 줄을 출력합니다.
출력:
C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem
PowerShell에서 Select-String
사용하기
여러 파일에서 특정 문자열을 확인하기 위해 Select-String
만 사용할 수도 있습니다.
Select-String -Path C:\Users\pc\Demo\*.txt -Pattern 'Demonstration'
이 스크립트에서는 -Path
매개변수에서 와일드카드(*
)를 사용하여 Demo
폴더의 모든 텍스트 파일을 검색합니다. Select-String
cmdlet은 모든 일치하는 파일에서 문자열을 검색합니다.
출력:
C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem
위와 동일하게, 콘솔은 문자열을 포함하고 있는 파일 이름, 줄 번호, 그리고 문자열이 포함된 줄을 출력합니다.
결론
Windows PowerShell은 텍스트 파일 내에서 문자열을 효율적으로 검색할 수 있는 도구 세트를 제공합니다. Select-String
, Get-Content
, 또는 Get-ChildItem
과 Select-String
의 조합을 선호하는지 간에, 파일 내에서 데이터를 쉽게 찾아 조작할 수 있습니다.
이 cmdlet을 통해 필요한 정보를 찾는 데 아무런 문제가 없을 것이며, PowerShell에서 텍스트 파일 검색이 수월해질 것입니다.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn