Subversion 사용시 모든 Directory에 .svn 이라는 숨김 Directory가 생긴다.
File을 Checkout 한 디렉토리 밖으로 복사하여 다른 용도로 사용 하기 시작하면 의미 없는 것들이 되는데 이때 이것들을 한번에 지워주는 스크립트이다.
첫 Powershell 포스트 이기 때문에 Powershell의 여러 기능을 소개 하기 위해
동일한 동작을 하는 코드를 여러가지 버전으로 공개 하겠다.
우선 Parameter 를 다음과 같이 받는다.
param($Path)
첫번째
#Path 하위 Item들 중 '.svn'을 포함하는 항목들을 가져옴 $Items = Get-ChildItem $Path -Include '.svn' -Recurse -Force foreach ($item in $Items) { #PSIsContainer 값으로 Directory 여부를 판단 #( $item.Attributes -eq 18 로 Hidden Directory를 감지 하는것도 좋다.) if ($item.PSIsContainer) { #하위 item 들 모두 삭제 Remove-Item $item -Recurse -Force } }
파이프 라인(PipeLine) 사용
Get-ChildItem $Path -Include '.svn' -Recurse -Force | Where-Object -FilterScript {$_.PSIsContainer} | ForEach-Object -Process {Remove-Item $_ -Recurse -Force};
Alias 적용
ls $Path -i '.svn' -r -fo | ?{$_.PSIsContainer} | %{rm $_ -r -fo}
완성된 스크립트 Remove-SvnDirectories.ps1
param([Parameter(Mandatory=$true,Position=0)]$Path) ls $Path -i '.svn' -r -fo | ?{$_.PSIsContainer} | %{rm $_ -r -fo}