2010. 11. 9. 17:58
안녕하세요. 엉스데브 입니다.
이번에는 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
감사합니다.
'Powershell > 엉스데브' 카테고리의 다른 글
PowerShell 로 만든 자작 함수/스크립트에 대한 도움말 작성하기 (0) | 2010.10.26 |
---|---|
PowerShell 로 원격 서버 관리하기. (5) | 2010.10.05 |
PowerShell 에서 작업 한 모든 내용을 기록하기(Start-Transcript) (0) | 2010.09.28 |
PowerShell 로 이벤트 로그 저장 설정 변경하기(+ wevtutil) (0) | 2010.09.27 |
PowerShell 에서 윈도우 내장 방화벽 관리하기 (0) | 2010.09.15 |