Netwrix 1Secure는 데이터와 아이덴티티 전반에 걸쳐 통합된 가시성을 제공합니다 - 14일간 무료로 전체 액세스가 가능합니다.무료 평가판 시작

리소스 센터블로그

PowerShell에서 Rename-Item Cmdlet을 사용해 파일 이름 바꾸기

PowerShell에서 Rename-Item Cmdlet을 사용해 파일 이름 바꾸기

May 30, 2025

Rename-Item cmdlet이란?

PowerShell의 Rename-Item cmdlet은 항목의 이름을 변경하는 데 사용할 수 있습니다. 이 항목은 파일, 디렉터리 또는 경로에 있는 어떤 개체든 될 수 있습니다. 이 cmdlet은 로컬 환경과 네트워크 환경 모두에서 항목의 이름을 바꾸는 데 사용할 수 있습니다. 사용자는 배치 이름 바꾸기 작업을 수행하고, 자동화를 위해 이름 바꾸기 작업을 스크립트에 통합할 수도 있으며, 와일드카드 문자와 정규식을 사용해 복잡한 이름 변경 요구 사항을 관리할 수도 있습니다. 예를 들어, 사용자는 파일 이름과 확장자를 손쉽게 변경하거나, 타임스탬프나 기타 식별 정보를 이름에 포함해 파일을 정리할 수 있습니다.

다음 PowerShell 콘텐츠도 관심이 있을 수 있어요:

PowerShell 파일을 삭제하는 방법
PowerShell 파일을 만드는 방법
PowerShell 파일을 복사하는 방법

Rename-Item cmdlet: 문법

아래는 PowerShell Rename-Item cmdlet의 구문과 이름 변경 프로세스를 유연하고 제어할 수 있게 해주는 지원 매개변수입니다.

      Rename-Item -Path <String> -NewName <String> [-Force] [-PassThru] [-WhatIf] [-Confirm] [<CommonParameters>]
      

아래는 Rename-Item의 기본 cmdlet입니다. 이 명령은 현재 디렉터리에서 “Report.txt” 파일을 “Report-26-09-2024.txt”로 이름을 바꿉니다.

      Rename-Item -Path "C:\Temp\Report.txt" -NewName "Report-26-09-2024.txt"
      

초보자를 위한 Windows PowerShell 스크립팅 튜토리얼(PDF)

자세히 알아보기

Rename-Item: 매개 변수

Rename-Item의 매개 변수를 이해하면 항목 이름을 바꾸는 데 이 cmdlet을 효과적으로 사용할 수 있습니다. 아래는 PowerShell에서 이 cmdlet과 함께 사용되는 모든 매개 변수에 대한 설명입니다.

Parameters

Description

-Path

Specifies the path of the item to be renamed. This can be the full path or relative to the current directory. The item at the path can be a file, folder, or any other type supporting renaming. This parameter is mandatory.

-LiteralPath

Provides an alternative to -Path. It is used to specify the path when the item names include special characters that PowerShell might otherwise interpret differently, such as “[“ or “]”. Unlike -Path, wildcard characters are not allowed, and the specified string is used exactly as it is.

-NewName

This mandatory parameter represents the new name for the item. It is important to note that this should be just the item’s name, not a path. If you are renaming a file and wish to keep its file type, ensure that the appropriate file extension is included in the new name.

-Credential

Although not commonly used in scripts for local file management, this optional parameter allows the cmdlet to execute using a set of user-specified credentials. This can be useful when working with files on a network share or in any scenario requiring specific permissions.

-Force

This parameter enables the cmdlet to rename read-only, hidden, or otherwise protected items. It overrides restrictions that would generally prevent the operation from succeeding.

-PassThru

By default, Rename-Item does not output any object. When the -PassThru parameter is used, the cmdlet returns the object that has been renamed. This can be useful for piping the renamed item into further commands or for immediate operation verification.

-WhatIf

This safety feature simulates the execution of the cmdlet without performing the rename operation. It shows what would happen if the cmdlet were to run, providing a preview of the results. This can be particularly useful in scripts or batch operations where you want to avoid unintended consequences.

-Confirm

Prompts the user for confirmation before executing the cmdlet. This can be useful in interactive scripts or when making significant changes, providing an extra layer of safety against unintended actions.

매개 변수를 사용한 Rename-Item 예제

아래는 서로 다른 매개 변수를 사용한 Rename-Item의 예시입니다. 이러한 예시를 통해 다양한 조건에서 항목을 이름을 바꾸는 방법을 확인할 수 있으며, 실제 환경에서 이 cmdlet을 적용하는 방법을 실질적으로 이해하는 데 도움이 됩니다.

아래는 “Design.txt” 파일 하나를 “Report.txt”로 이름 바꾸는 기본 예제 cmdlet입니다.

      Rename-Item -Path "C:\Backups\Design.txt" -NewName "Report.txt"
      

아래 예시에서 보이듯이 -Force 매개 변수는 읽기 전용 또는 숨김 파일의 이름을 변경합니다.

      Rename-Item -Path "C:\Backups\Design.txt" -NewName "Report.txt" -Force
      

-PassThru 매개 변수는 이름이 변경된 항목을 나타내는 개체를 반환하며, 해당 개체를 다른 cmdlet으로 파이프할 수 있습니다. 이름을 변경한 직후에는 이름이 변경된 항목의 전체 정보를 바로 확인할 수 있습니다.

      Rename-Item -Path "C:\Backups\Design.txt" -NewName "Report.txt" -PassThru | Get-Item
      
Image

이름 변경을 실제로 수행하지 않고 어떤 일이 일어날지 확인하려면 -WhatIf 매개 변수를 사용하세요. 이는 스크립트에서 테스트할 때 특히 유용합니다. 결과를 확인한 후에는 실제 이름 변경을 위해 -WhatIf 매개 변수를 제외하고 cmdlet을 실행하세요.

      Rename-Item -Path "C:\Backups\Design.txt" -NewName "C:\Backups\NewDesign.txt" -WhatIf
      
Image

출력은 수행될 작업을 설명하지만 실제로는 실행하지 않습니다.

이름 변경이 발생하기 전에 확인을 요청받고 싶다면 Confirm 매개 변수를 사용하세요. 이는 실수로 이름을 변경했을 때 중대한 결과로 이어질 수 있는 시나리오에 유용합니다.

      Rename-Item -Path "C:\Backups\Design.txt" -NewName "Report.txt" -Confirm
      

작업이 진행되기 전에 해당 작업을 확인하라는 메시지가 표시됩니다.

Image

Path vs. LiteralPath 매개변수

파일 및 디렉터리 작업이 포함된 cmdlet을 사용할 때는 종종 두 가지 매개변수인 -Path와 -LiteralPath를 접하게 됩니다. 이 두 매개변수의 차이를 이해하는 것은 특히 특수 문자나 예약어가 포함된 파일 이름 또는 경로를 다룰 때 파일 시스템 작업을 효과적으로 관리하는 데 필수적입니다.

-Path

-Path는 항목의 위치를 지정할 때 더 일반적으로 사용되는 매개변수입니다. 와일드카드(*)를 지원하므로 패턴 일치를 수행하고 한 번의 명령으로 여러 항목을 선택할 수 있습니다. PowerShell은 와일드카드를 포함한 특수 문자를 해석합니다. 즉, 파일 이름이나 경로에 “[],(),{}” 같은 문자가 포함되어 있으면 PowerShell이 이를 와일드카드 패턴의 일부로 취급하여 예기치 않은 동작으로 이어질 수 있습니다.

예시

      Rename-Item -Path C:\Logs\*
      

-LiteralPath

-LiteralPath는 와일드카드로 해석될 수 있는 문자를 처리하지 않고 항목의 위치를 지정하는 데 사용됩니다. 특수 문자를 포함하는 파일 이름이나 경로를 다룰 때 이 매개변수를 입력하면, PowerShell이 입력 문자열을 문자 그대로 취급하여 패턴 일치 시도를 하지 않도록 할 수 있습니다.

예시

      Rename-Item -LiteralPath “C:\Files\[Design].txt”
      

Rename-Item 사용의 일반적인 예시

파일 이름 바꾸기 및 이동

PowerShell을 통해 Rename-Item cmdlet으로 파일 이름을 바꾸면서 동시에 다른 위치로 이동할 수는 없습니다. 그렇게 하면 아래 오류가 발생합니다.

Image

파일을 이동하면서 대상 위치에서 파일 이름도 동시에 바꾸려면 Move Item cmdlet을 사용해야 합니다.

아래는 cmdlet을 사용하여 파일을 이동하고 이름을 바꾸는 방법입니다.

      Move-Item -Path "C:\Backups\Design.txt" -Destination "C:\Archive\NewDesign.txt"
      

숨김 및 읽기 전용 파일 이름 바꾸기

숨김 또는 읽기 전용 파일의 이름을 바꾸려면 Rename-Item cmdlet과 함께 -Force 매개 변수를 사용하세요. 이 매개 변수는 이름 변경 과정에서 PowerShell이 읽기 전용 특성을 우회할 수 있도록 합니다.

      Rename-Item -Path "C:\Documents\ReadOnlyFile.txt" -NewName "RenamedFile.txt" -Force
      

일괄 파일 이름 변경

PowerShell로 파일을 일괄 이름 변경하는 작업은 대규모 데이터 집합을 관리하거나 아카이브를 정리하거나, 단순히 디렉터리를 정돈할 때 흔히 수행하는 작업입니다.

예를 들어 “.txt”를 “.log”로 여러 파일의 확장자를 변경해야 하는 경우, 다음 스크립트를 사용할 수 있습니다.

      Get-ChildItem -Path "C:\Documents" -Filter "*.txt" | ForEach-Object {

    $newName = [io.path]::ChangeExtension($_.Name, ".log")

    Rename-Item -Path $_.FullName -NewName $newName

}
      

또는 아래의 PowerShell “여러 파일 및 파일 확장자 이름 변경” cmdlet을 사용하면, 각 파일마다 루프를 추가하지 않아도 됩니다.

      Get-ChildItem -Path "C:\Documents\*.txt" | Rename-Item -NewName { $_.Name -replace ".txt",".log" }
      

접두사와 접미사 추가하기

PowerShell에서 디렉터리의 모든 파일을 이름 바꾸기(rename) 명령을 사용하면 파일 이름에 접두사나 접미사를 추가할 수 있습니다. 파일을 정리하거나 문서 버전 관리를 하거나 아카이빙을 위해 데이터를 준비할 때 흔히 수행하는 작업입니다. PowerShell을 사용하면 Get-ChildItem 및 Rename-Item cmdlet을 사용해 접두사와 접미사를 추가할 수 있습니다.

아래 스크립트를 사용하여 특정 디렉터리의 모든 파일에 접두사를 추가할 수 있습니다.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    Rename-Item -Path $_.FullName -NewName ("Project_" + $_.Name)

}
      

마찬가지로 아래 스크립트를 사용하면 파일 확장자 앞에 접미사를 추가할 수 있습니다.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    Rename-Item -Path $_.FullName -NewName ($_.BaseName + "_Final" + $_.Extension)

}
      

모든 .txt 파일에 접두사 “Backup_”와 접미사 “_2024”를 추가합니다.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    Rename-Item -Path $_.FullName -NewName ("Backup_" + $_.BaseName + "_2024" + $_.Extension)

}
      

타임스탬프를 포함해 파일 이름 바꾸기

파일 이름에 타임스탬프를 포함해 다시 명명하면 백업을 만들거나 아카이브를 정리하거나 파일 버전을 추적하는 데 매우 유용합니다.

이 예시는 특정 디렉터리의 모든 “.txt” 파일에 접미사로 “yyyyMMdd_HHmmss” 형식의 타임스탬프를 추가하는 방법을 보여줍니다.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $timestamp = Get-Date -Format "yyyyMMdd_HHmmss"

    $newName = $_.BaseName + "_" + $timestamp + $_.Extension

    Rename-Item -Path $_.FullName -NewName $newName

}
      

파일 이름의 맨 앞에 타임스탬프를 두고 싶다면, 아래와 같이 스크립트를 약간 수정할 수 있습니다.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $timestamp = Get-Date -Format "yyyyMMdd_HHmmss"

    $newName = $timestamp + "_" + $_.Name

    Rename-Item -Path $_.FullName -NewName $newName

}
      

C:\Documents 디렉터리의 모든 .txt 파일 이름을 바꾸려면, 생성 타임스탬프를 맨 앞에 추가하세요.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $timestamp = $_.CreationTime.ToString("yyyyMMdd_HHmmss")

    Rename-Item -Path $_.FullName -NewName ("$timestamp" + "_" + $_.Name)

}
      

모든 .txt 파일에 수정(변경) 타임스탬프를 접미사로 추가하려면.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $timestamp = $_.LastWriteTime.ToString("yyyyMMdd_HHmmss")

    Rename-Item -Path $_.FullName -NewName ($_.BaseName + "_" + $timestamp + $_.Extension)

}
      

모든 .docx 파일에 생성 타임스탬프를 접두사로, 마지막 수정 타임스탬프를 접미사로 추가하려면.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $creationTimestamp = $_.CreationTime.ToString("yyyyMMdd_HHmmss")

    $modifiedTimestamp = $_.LastWriteTime.ToString("yyyyMMdd_HHmmss")

    Rename-Item -Path $_.FullName -NewName ("$creationTimestamp" + "_" + $_.BaseName + "_$modifiedTimestamp" + $_.Extension)

}
      

파일 이름 충돌 처리

파일 이름 충돌 처리는 파일을 이름 변경하거나 이동하는 등의 파일 작업을 자동화할 때 중요합니다. 의도치 않게 기존 파일을 덮어쓰지 않기 위해서입니다. 새 이름을 가진 파일이 이미 존재하는지 확인할 수 있습니다. 존재한다면, 새 이름을 수정할 수 있습니다(예: 카운터를 추가하거나 추가 타임스탬프를 덧붙이기).

예시: 충돌이 발생하면 카운터와 생성 날짜를 추가하기

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $baseName = $_.BaseName

    $extension = $_.Extension

    $creationTimestamp = $_.CreationTime.ToString("yyyyMMdd_HHmmss")

    $newName = "$baseName" + "_$creationTimestamp" + "$extension"

    # Initialize a counter for collisions

    $counter = 1

    # Check if the new name already exists

    while (Test-Path -Path (Join-Path -Path $_.DirectoryName -ChildPath $newName)) {

        $newName = "$baseName" + "_$creationTimestamp" + "_$counter" + "$extension"

        $counter++

    }

    Rename-Item -Path $_.FullName -NewName $newName

}
      

설명

위 스크립트는 모든 .txt 파일을 가져옵니다. 파일의 생성 날짜로 타임스탬프를 사용해 새 이름을 만든 다음, 해당 새 이름이 이미 존재하는지 확인합니다. 존재한다면 “_1”, “_2” 등과 같은 카운터를 붙여 고유한 이름이 발견될 때까지 계속합니다.

레지스트리 키 이름 바꾸기

PowerShell로 레지스트리 키의 이름을 바꾸려면 Rename-Item cmdlet을 사용하고, cmdlet을 실행하기 전에 이름을 바꿀 키를 먼저 내보내면 됩니다. 이는 문제가 발생했을 때 백업을 확보하기 위한 예방 조치입니다.

      Rename-Item -Path "HKLM:\Software\MyCompany\Advertising" -NewName "Marketing"
      

Microsoft 365 튜토리얼: 완전한 관리 가이드

자세히 알아보기

복잡한 이름 변경에는 정규식(Regular Expressions)을 사용하세요

PowerShell에서 폴더 내 파일 이름을 변경하는 명령

-replace 연산자를 사용하면 정규식(regular expression, regex) 패턴을 적용하여 폴더 내 파일 이름을 강력하게 변경할 수 있습니다. 이 방식은 특정 패턴에 따라 파일 또는 디렉터리 이름의 일부를 추가, 제거 또는 수정해야 하는 대량 리네임 작업에 특히 유용할 수 있습니다.

예를 들어 “report1_2023-04-01.txt”, “report2_2023-04-02.txt” 같은 파일이 여러 개 있고, 이름에서 날짜 스탬프뿐 아니라 밑줄(_)도 함께 제거하고 싶다고 가정해 보겠습니다.

아래 명령은 “report*”로 시작한 뒤 날짜 스탬프가 붙은 모든 .txt 파일을 찾아, 날짜 스탬프를 제거한 뒤 숫자는 그대로 유지한 채 “report.txt”만 남기도록 이름을 바꿉니다. 예: “report1.txt”, “report2.txt”.

      Get-ChildItem -Path "C:\Backups"-Filter "report*.txt" | Rename-Item -NewName {$_.Name -replace '_\d{4}-\d{2}-\d{2}', ''}
      

순차 번호 매기기

Rename-Item cmdlet을 사용하여 파일 이름에 순차 번호를 추가하려면 파일을 순회하면서 카운터를 구현하기 위한 스크립팅이 필요합니다. 이는 파일을 특정 순서로 정리하거나 각 파일의 고유성을 보장하는 데 특히 유용할 수 있습니다.

파일 이름에 순차 번호를 포함하도록 변경하려면(예: “Image_1.jpg”, “Image_2.jpg”) 아래 스크립트를 사용할 수 있습니다.

      $counter = 1

Get-ChildItem -Path "C:\Images" -Filter "*.jpg" | ForEach-Object {

    Rename-Item -Path $_.FullName -NewName ("Image_$counter.jpg")

    $counter++

}
      

Rename-Item에서 흔히 발생하는 오류와 문제 해결 방법

파일, 디렉터리 및 레지스트리 키 이름을 바꾸는 작업을 PowerShell에서 수행할 때 흔히 발생하는 몇 가지 오류나 문제가 나타날 수 있습니다. 이러한 잠재적 함정과 해결 방법을 이해하면 파일 및 디렉터리 이름 변경 작업이 원활하게 진행되는 데 도움이 됩니다. 아래에는 자주 발생하는 오류와 문제 해결 팁을 정리했습니다.

파일을 찾을 수 없음 오류

PowerShell이 해당 경로를 찾을 수 없습니다. 해당 경로가 존재하지 않기 때문입니다. 파일 경로에 오타가 없는지 확인하세요. 이름을 변경하기 전에 Test-Path cmdlet을 사용해 파일이 존재하는지 확인합니다.

      if (Test-Path "C:\Backups\design.txt") {

    Rename-Item -Path "C:\Backups\Design.txt" -NewName "NewDesign.txt"

} else {

    Write-Host "File does not exist."

}
      

파일이 사용 중

다른 프로세스가 파일을 사용 중이어서 cmdlet이 파일에 접근할 수 없습니다. 이 오류는 이름을 변경하려는 파일이 다른 애플리케이션에서 열려 있을 때 발생합니다. 해당 파일을 사용할 수 있는 다른 모든 애플리케이션에서 파일을 닫으세요. 문제가 계속되면 파일을 잠근 프로세스를 종료하거나, 파일 잠금이 해제되도록 시스템을 재시작해야 할 수 있습니다.

액세스 거부 오류

경로에 대한 액세스가 거부되었거나 파일 또는 레지스트리 키를 수정할 권한이 부족합니다.

이 오류를 방지하려면 PowerShell을 관리자 권한으로 실행하거나 파일 또는 키 권한을 확인한 후 필요하면 권한을 조정하세요.

경로가 너무 김 오류

지정한 경로, 파일 이름 또는 둘 다가 너무 깁니다. Windows에는 최대 경로 길이 제한이 있으며(일반적으로 260자), 파일을 상위 디렉터리 수준으로 이동하여 경로를 줄이세요.

대상 이미 존재 오류

대상이 이미 존재하므로 이름을 바꿀 수 없습니다. 새 파일 이름이 대상 디렉터리에 이미 존재합니다. Test-Path를 사용해 대상 파일이 존재하는지 확인하세요. 접미사를 추가하거나 숫자를 증가시키는 등 충돌을 관리하도록 스크립트를 수정하십시오.

잘못된 문자 오류

파일, 디렉터리 또는 레지스트리 이름이 올바르지 않습니다. 새 파일 이름에 잘못된 문자가 포함되어 있습니다. 새 이름에 잘못된 문자가 포함되지 않았는지 확인하세요. 이름을 바꾸기 전에 정규식을 사용해 잘못된 문자를 제거하거나 바꾸십시오.

결론

PowerShell의 Rename-Item 명령을 사용하면 파일, 디렉터리 또는 파일 시스템의 다른 항목의 이름을 변경할 수 있습니다. 이 명령은 항목 자체를 변경하지 않고 이름만 변경합니다. PowerShell에서 현재 경로와 새 이름을 지정하여 항목의 이름을 바꾸는 데 사용할 수 있습니다. 또한 명령에는 작업을 강제로 수행하는 옵션, 실제로 항목 이름을 바꾸지 않고 어떤 일이 발생할지를 보여주는 옵션, 이름을 변경하기 전에 확인을 요청하는 옵션이 제공됩니다. 이 명령은 파일과 디렉터리 관리 작업을 자동화하는 데 유용합니다. 예를 들어 파일에 접두사, 접미사, 연속 번호를 추가하는 작업을 자동화할 수 있습니다.

Netwrix Directory Manager

자주 묻는 질문(FAQ)

PowerShell의 Rename-Item cmdlet이란 무엇인가요?

Rename-Item cmdlet은 PowerShell을 사용해 항목의 이름을 변경할 때 사용합니다. 예를 들어 파일이나 레지스트리 키를 변경할 수 있습니다. 이 cmdlet은 -Path, -Force, -WhatIf, -Confirm, -Passthru 등 다양한 지원 매개변수를 제공하며, 상황에 따라 적절하게 사용할 수 있습니다.

Rename-Item으로 파일을 이동하면서 동시에 이름을 바꿀 수 있나요?

아니요. Rename-Item을 사용해 파일을 이동하면서 동시에 이름을 바꿀 수는 없습니다. 먼저 Move-Item으로 파일을 이동한 다음, 새 파일 이름과 함께 대상 경로를 지정해야 합니다.

공유하기

더 알아보기

저자 소개

Asset Not Found

Kevin Horvatin

수석 소프트웨어 아키텍트

Kevin Horvatin은 Netwrix의 수석 소프트웨어 아키텍트이며 Netwrix Privilege Secure를 담당하고 있습니다. 20년 넘게 소프트웨어 개발자로 일해 왔으며, PowerShell과 C#이 처음 소개된 시점부터 이를 다뤄 왔습니다.