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 공부방]
'IT이야기 > Powershell' 카테고리의 다른 글
윈도우 업데이트 리스트 카운트 구하기 (0) | 2019.05.27 |
---|---|
[MSSQL]WMI for SQL Management(2)-ClientNetworkProtocol (0) | 2019.05.21 |
파워쉘로 mssql 쿼리하는 법 (0) | 2019.05.21 |
Where-Object (0) | 2018.12.13 |
Powershell – Remoting (원격 접속) (0) | 2016.12.20 |