728x90

PowerShell 을 이용해서 대량의 파일을 대상으로 내부 내용을 변경 하는 방법을 찾아 보았습니다.

PowerShell 에는 -replace 연산자가 존재하는데, 마치 리눅스의 sed 명령어 처럼 쓸 수 있습니다.

"wow nice olleh" | %{$_ -Replace ("nice","OLLEH")}

 




이 연산자를 사용해서 대량의 파일을 대상으로 내용을 변경 하는 것도 가능 한데요, 아래의 구조로 된 폴더를 예로 들겠습니다.



폴더의 내부에 존재하는 각 파일의 내용에는 nice 라는 문자열이 존재합니다.



만약, "MyDocument" 디렉터리및 하위 디렉터리의 모든 *.txt 파일을 대상으로 파일 내용 중 "nice" 를 "OLLEH" 라고 바꾸고 싶다면, 아래 명령어를 사용하면 됩니다.

dir -Path MyDocument -Include *.txt -Recurse | %{$tmp = Get-Content $_; $tmp=$tmp -Replace ("nice","OLLEH"); Set-Content $_ $tmp}

 


파일의 내용 중 nice 가 모두 OLLEH 로 변경 된 것을 확인 할 수 있습니다.

대량 변경 작업시에 유용하게 사용 할 수 있을 것 같네요. ^^



<참고 URL>
http://www.myitforum.com/articles/40/view.asp?id=11843
http://blogs.msdn.com/b/zainnab/archive/2007/07/09/grep-and-sed-with-powershell.aspx

<참고 도움말>
about_Comparison_Operators

감사합니다.

출처: https://svrstudy.tistory.com/81?category=352377 [Windows Server 공부방]

728x90

+ Recent posts