PowerShell을 사용하여 폴더 내의 파일명을 한 번에 바꾸기

공대생의 팁 2021. 6. 11. 22:58

 

 

 우분투에서 터미널을 다룰 때 다량의 파일들을 처리할 때 간단한 명령어로 쉽게 처리하곤 했었습니다. Windows에서도 많은 양의 파일을 다루게 되었을 때 우분투에서는 쉽게 생각해낼 수 있는 명령어가 익숙치 않아 찾아보던 도중 괜찮은 내용이 있어 이렇게 여러분들께 공유해보고자 합니다.

 

 Windows를 사용함에 있어 가장 큰 장점은 사용하기 쉬운 UI를 통해 사용자가 편하게 애플리케이션을 제어할 수 있다는 점입니다. 특히 파일명을 바꾸고 싶을 때는 아래와 같이 파일 이름을 한 번 사뿐이 클릭만 해주면 바로 바꿀 수 있게 되어 있다는 것이지요.

 그러나 아무리 사용이 편한 Windows라고 할지라도 파일의 갯수가 수천개 이상일 경우 이러한 방식으로 일일히 파일명을 변경하려 하는 것은 상당한 시간 낭비입니다. 그렇다면 Windows에서도 우분투의 터미널처렴 간단한 명령어로 파일명을 변경하는 방법은 없을까요?

 

 Windows에서도 강력한 CLI 환경인 PowerShell을 제공합니다. 이름 변경을 원하는 폴더 화면에서 Shift+오른쪽마우스버튼을 클릭하면 아래와 같이 '여기에 PowerShell 창 열기'라는 메뉴가 나타납니다. 해당 메뉴를 클릭해줍니다.

 이 과정을 거치면 여러분의 컴퓨터 환경에서 PowerShell을 사용할 수 있게 됩니다. 

 만약 여러분들이 특정 폴더 내의 모든 파일명 앞이나 뒷부분에 원하는 내용을 추가하고자 합니다. 이 경우 다음과 같은 명령어를 입력해주면 폴더 내의 모든 파일명의 prefix(접미사)부분에 추가한 명칭이 추가되는 것을 확인해봅니다.

 

dir -exclude "1st_*" | Rename-Item -NewName {"1st_" + $_.name}

 

여기서 위의 명령어들을 하나씩 살펴보도록 하겠습니다.

 

dir: 폴더 내의 모든 파일을 조회합니다. 만약 폴더 내 하위 폴더의 내용들을 모두 보고 싶다면 다음과 같이 \b\s를 추가해줍니다.

 

dir \b\s -exclude "1st_*" | Rename-Item -NewName {"1st_" + $_.name}

 

-exclude "1st_*": 폴더 내 파일명중 "1st_"로 시작되는 파일명은 조회에서 제외합니다. 이때 *은 "1st_" 뒤는 어떤 내용이든 상관없다는 의미로 이해하시면 됩니다.

 위 명령어를 미리 넣어주는 이유는 파일명이 변경되고나서도 파일을 또다시 조회하는 경우가 발생하는데 이 경우가 생기면 파일명이 한도끝도 없이 변경되는 참사가 발생하는 경우가 있습니다.

 

|: 둘 이상의 명령어를 연결해줍니다. 위의 예제에서의 경우 dir을 실행한 다움 Rename-Item 명령어로 이어주어 명령어가 실행될 수 있도록 하여줍니다.

 

Rename-Item: 지정된 파일명을 변경합니다. 위의 경우 dir로 나타난 결과를 변경합니다.

 

-NewName {"1st_" + $_.name}: 지정된 파일에 새 이름을 부여합니다. 여기서 "$_name"은 지정된 파일의 이름을 뜻합니다.

 

위 명령어를 실행하면 아래와 같은 결과를 얻을 수 있습니다.

 이번에는 파일명의 반복되는 일부분을 변경하는 명령어를 실행해 보겠습니다.

 

dir | Rename-Item -NewName {$_.name -replace "1st_", "2"}

 

 위 명령어를 보았을 때 -replace가 이름의 일부분을 바꾸는 것임을 유추할 수 있습니다. 명령어를 입력한 후 결과를 확인해 보도록 합니다.

위 예제를 응용하여 이번에는 이름에서 특정 반복되는 부분을 삭제해볼까요?

 

dir | Rename-Item -NewName {$_.name -replace "2", ""}

 

해당 명령어를 적용해보면 모든 파일의 이름이 말끔하게 바뀌었음을 확인할 수 있습니다.

 

 

 

300x250