HOWTO · PowerShell

PowerShell을 사용하여 경로에서 파일 이름 추출하는 방법

이 튜토리얼에서는 PowerShell을 사용하여 경로에서 파일 이름을 추출하는 방법을 배울 것입니다.

이 페이지의 내용

파일 경로는 시스템에서 파일의 위치를 알려줍니다. PowerShell에서 파일을 작업할 때, 경로에서 파일 이름만 가져와야 할 수도 있습니다.

PowerShell에서는 파일의 경로를 가져오는 다양한 방법이 있습니다. 이 튜토리얼에서는 PowerShell을 사용하여 파일 경로에서 파일 이름을 추출하는 방법을 배웁니다.

PowerShell에서 경로에서 파일 이름을 추출하기 위해 Split-Path Cmdlet 사용하기

PowerShell에서 Split-Path cmdlet은 주어진 경로의 특정 세그먼트를 분리하는 데 유용한 도구입니다. 상위 폴더, 하위 폴더, 파일 이름 또는 파일 확장자 등을 대상으로 하여 이 요소들을 표시할 수 있습니다.

확장자와 함께 파일 이름 추출하기

경로에서 파일 이름과 그 확장자를 캡처하려면 -Leaf 매개변수와 함께 Split-Path 명령을 사용할 수 있습니다:

Split-Path C:\pc\test_folder\hello.txt -Leaf

출력:

hello.txt

확장자 없는 파일 이름 얻기

확장자 없이 파일 이름이 필요한 경우 -LeafBase 매개변수가 유용합니다. 그러나 이 매개변수는 PowerShell 6.0 이상에서 사용할 수 있다는 점에 유의해야 합니다:

Split-Path C:\pc\test_folder\hello.txt -LeafBase

출력:

hello

PowerShell에서 경로에서 파일 이름을 추출하기 위해 .NET의 Path 클래스 메소드 사용하기

.NET에서 Path 클래스는 지정된 경로에서 파일 이름과 확장자를 쉽게 추출할 수 있는 유용한 메소드를 제공합니다. 이 기능을 예제와 함께 살펴보겠습니다.

GetFileName을 사용하여 확장자와 함께 파일 이름 추출하기

Path 클래스의 GetFileName 메소드는 주어진 경로에서 파일 이름과 그 확장자를 검색합니다. 경로 C:\pc\test_folder\hello.txt를 사용하여 이를 시연해 보겠습니다:

[System.IO.Path]::GetFileName('C:\pc\test_folder\hello.txt')

출력:

hello.txt

GetFileNameWithoutExtension을 사용하여 확장자 없는 파일 이름 얻기

확장자 없이 파일 이름만 추출하려면 GetFileNameWithoutExtension 메소드를 사용할 수 있습니다. 이는 파일 유형을 제외한 파일 자체의 이름이 필요할 때 유용합니다:

[System.IO.Path]::GetFileNameWithoutExtension('C:\pc\test_folder\hello.txt')

출력:

hello

PowerShell에서 경로에서 파일 이름을 추출하기 위해 Get-ItemGet-ChildItem Cmdlet 사용하기

PowerShell에서 Get-ItemGet-ChildItem cmdlet은 파일 및 디렉터리를 작업할 때 중요한 도구로, 주어진 위치의 항목에 대한 특정 정보를 추출할 수 있습니다.

주어진 경로에서 파일 이름을 추출하는 방법을 살펴보겠습니다. 확장자 유무에 따라 변형도 포함됩니다.

Get-Item을 사용하여 확장자와 함께 파일 이름 추출하기

Get-Item cmdlet은 지정된 항목에 대한 상세 정보를 검색하며, 여기에는 디렉터리, 모드, 마지막 수정 시간, 길이 및 이름이 포함됩니다. 확장자와 함께 파일 이름을 추출하려면 Get-Item과 함께 .Name 속성을 사용할 수 있습니다.

특정 경로 C:\pc\test_folder\hello.txt를 사용하여 이를 시연해 보겠습니다:

(Get-Item C:\pc\test_folder\hello.txt).Name

출력:

hello.txt

Get-Item을 사용하여 확장자 없는 파일 이름 얻기

확장자 없는 파일 이름만 추출하려면 Get-Item과 함께 .BaseName 속성을 활용할 수 있습니다. 이는 제공된 경로에서 파일 이름만 분리할 수 있게 해줍니다:

(Get-Item C:\pc\test_folder\hello.txt).BaseName

출력:

hello

Get-ChildItem과 함께 방법 적용하기

이 접근 방식은 지정된 위치의 항목에 대한 정보를 검색하는 Get-ChildItem cmdlet을 사용할 때도 적용됩니다. 확장자 유무에 따라 파일 이름을 추출하는 방법은 다음과 같습니다:

(Get-ChildItem C:\pc\test_folder\hello.txt).Name
(Get-ChildItem C:\pc\test_folder\hello.txt).BaseName

출력:

hello.txt
hello

PowerShell에서 경로에서 파일 이름 추출하기 위해 정규 표현식 사용하기

정규 표현식도 PowerShell에서 경로에서 파일 이름을 추출하는 데 사용할 수 있습니다. .NET의 Regex 클래스는 패턴 매칭 및 조작을 위한 강력한 도구를 제공합니다.

이것이 어떻게 작동하는지 살펴보겠습니다:

# Define the path
$path = "C:\pc\test_folder\hello.txt"

# Use regular expression to extract the filename
$filename = [System.Text.RegularExpressions.Regex]::Match($path, '\\([^\\]+)$').Groups[1].Value
$filename

출력:

hello.txt

이 예제에서는 마지막 백슬래시 이후의 텍스트를 캡처하기 위해 정규 표현식을 사용합니다. 이 텍스트는 확장자와 함께 파일 이름을 나타냅니다.

정규 표현식 '\\([^\\]+)$'는 다음과 같이 구성되어 있습니다:

  • \\: 경로의 백슬래시와 일치합니다.
  • ([^\\]+): 캡처 그룹 내에서 백슬래시가 아닌 하나 이상의 문자를 캡처합니다(확장자를 포함한 파일 이름 나타냄).
  • $: 문자열의 끝에서 일치가 발생해야 함을 지정합니다.

Regex 클래스의 Match 메소드를 사용하여 경로에 정규 표현식을 적용합니다.

결과로 얻는 일치는 확장자와 함께 파일 이름을 포함합니다. Groups[1].Value를 통해 원하는 파일 이름을 추출합니다.

PowerShell에서 경로에서 파일 이름 추출하기 위해 문자열 조작 사용하기

문자열 조작 기법도 경로에서 파일 이름을 추출하는 데 사용할 수 있습니다. 예를 들어, LastIndexOf 메소드를 사용하여 마지막 백슬래시의 마지막 발생을 찾고 그에 따라 파일 이름을 추출할 수 있습니다.

# Define the path
$path = "C:\pc\test_folder\hello.txt"

# Find the index of the last backslash
$lastBackslashIndex = $path.LastIndexOf("\") + 1

# Extract the filename
$filename = $path.Substring($lastBackslashIndex)
$filename

출력:

hello.txt

여기에서 우리는 경로에서 마지막 백슬래시(\)의 마지막 발생의 인덱스를 확인하기 위해 LastIndexOf 메소드를 사용하여 파일 이름이 시작되는 위치를 식별합니다.

  • $lastBackslashIndex = $path.LastIndexOf("\") + 1: 이 줄은 마지막 백슬래시의 인덱스를 계산하고 1을 더해 백슬래시 다음에서 문자를 추출하도록 합니다.

다음으로, Substring 메소드를 사용하여 마지막 백슬래시 다음의 인덱스에서 시작하여 문자열의 끝까지 파일 이름을 추출합니다.

  • $filename = $path.Substring($lastBackslashIndex): 여기에서 계산된 인덱스를 사용하여 Substring으로 파일 이름을 추출합니다.

PowerShell에서 경로에서 파일 이름 추출하기 위해 System.IO.FileInfo 클래스 사용하기

System.IO.FileInfo 클래스는 파일 이름을 포함한 파일 정보에 접근할 수 있는 속성을 제공합니다. FileInfo 객체를 생성한 후, Name 속성에 접근하여 파일 이름을 얻을 수 있습니다.

# Define the path
$path = "C:\pc\test_folder\hello.txt"

# Create a FileInfo object
$fileInfo = New-Object System.IO.FileInfo $path

# Extract the filename
$filename = $fileInfo.Name
$filename

출력:

hello.txt

이 예제에서는 New-ObjectSystem.IO.FileInfo 클래스를 사용하여 FileInfo 객체를 생성하고, 이를 통해 파일 관련 속성과 메소드에 접근합니다.

  • $fileInfo = New-Object System.IO.FileInfo $path: 이 줄은 제공된 경로를 기반으로 FileInfo 객체를 생성합니다.

다음으로, FileInfo 객체의 Name 속성을 활용하여 파일 이름을 추출합니다.

  • $filename = $fileInfo.Name: 여기에서 FileInfo 객체의 Name 속성을 통해 파일 이름을 가져옵니다.

결론

이 튜토리얼에서는 PowerShell에서 경로에서 파일 이름을 추출하는 다양한 방법을 탐구했습니다. Split-Path와 같은 내장 cmdlet을 사용하여 정규 표현식 및 문자열 조작을 활용하는 등, 특정 요구 사항에 따라 선택할 수 있는 다양한 옵션이 있습니다.

이러한 기술을 이해하면 파일 경로를 처리하고 PowerShell에서 필수 파일 정보를 추출하는 데 능숙해질 것입니다. 내장 cmdlet의 단순함을 선호하든 정규 표현식의 유연성을 선호하든, PowerShell은 효과적인 파일 조작을 위한 강력한 도구 세트를 제공합니다.