터미널을 사용하여 모든 .svn 폴더를 재귀 적으로 삭제하는 방법은 무엇입니까?


56

.svn폴더 내 (및 모든 하위 디렉토리에서) 모든 폴더를 삭제할 수 있지만 다른 것을 삭제할 수 없도록 터미널에 어떤 명령을 입력 할 수 있습니까?


아마도 당신은 svn export path/to/repo path/to/export/to대신에 ...
Jonny

참고 svn export로 svn에 포함되지 않은 파일은 복사하지 않습니다. 예를 들어, Pods 폴더를 커밋하지 않는 Cocoa Pods를 사용하는 iOS 응용 프로그램에서이 작업을 수행하려고했습니다. 그런 다음 출력에서 ​​생략되었습니다. 나는 내가 원했던 것에 대해 Rich의 대답과 비슷한 것을 사용하게되었습니다.
jackofallcode

답변:


120
cd to/dir/where/you/want/to/start
find . -type d -name '.svn' -print -exec rm -rf {} \;
  • 재귀를 수행하는 find 사용
  • 현재 디렉토리에 있습니다.
  • 파일 유형은 디렉토리입니다
  • 파일 이름은 .svn
  • 이 시점과 일치하는 것을 인쇄하십시오 (.svn dirs)
  • 명령을 실행하십시오 rm -rf (thing found from find). {}는 발견 된 엔티티의 자리 표시 자입니다.
  • ; exec 명령이 완료되었음을 알려줍니다. 쉘은 또한 무엇에 대한 아이디어를 가지고 있기 때문에; 쉘이 특별한 작업을 수행하지 않고 찾을 수 있도록 \로 이스케이프해야합니다.

2
좋은 해결책입니다. 하지만 find-delete이 비어 있지 않은 디렉토리를 삭제되지 않습니다. 이 방법은 전체 파일 경로의 일부를 일치시키기 시작하는 것보다 깨끗합니다.
Daniel Beck

13
-exec rm -rf {} \;원하는 것만 찾을 수 있도록 처음으로 실행하지 않는 것이 좋습니다 . 나는 항상 먼저 확인하기 때문에 실수로 잘못 삭제 한 문제는 없었습니다.
Rob

2
@Rob 좋은 점, 나는 보통 -exec echo rm -rf {} \; 그런 다음 에코를 제거하십시오.
Rich Homolka

너무 많지 않은 경우 다른 옵션은 다음과 같이 각 파일의 삭제를 확인하는 것입니다.-exec rm -ri {} \;
doovers

4
-exec rm -rf {} +rm인스턴스를 너무 많이 시작할 필요가 없기 때문에 아마도 몇 배나 빠릅니다 . 대신 한 번의 호출로 최대 양의 인수 (이 경우 제거 할 디렉토리)를 압축합니다. rm여러 인수를 허용 하기 때문에 가능합니다 .
Daniel B
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.