2012-12-13 2 views
2

this question 및 그 밖의 백개 자리에는 모든 .svn 디렉토리를 삭제할 수있는 거의 동일한 Linux 솔루션이 있습니다. 경로가 공백을 포함 할 때까지 아름답게 작동합니다. 그래서, 공백이 포함 된 디렉토리에서 .svn 파일을 재귀 적으로 제거하는 기법이 있습니까? 아마도 에게의 답을 따옴표로 묶어서 알려주는 방법일까요?공백이 포함 된 경로의 모든 .SVN 폴더를 삭제하십시오.

답변

4

당신은 -print0 행동과 출력 구분 기호 대신 줄 바꿈으로이 null를 사용 find을 알 수 있습니다.

xargs-0 인수가있는 입력 구분 기호로 null을 사용하도록 지정할 수 있습니다.

예 :

find . -name '*.svn' -print0 | xargs -0 -I{} rm \'{}\' 

xargs를에 -I{} 인수가 표준 입력에서 현재 라인 {}을 대체한다는 뜻입니다. 그리고 개인적으로, 나는 파일 이름 주위에 백 슬래시로 이스케이프 된 따옴표를 포함시키는 것을 좋아합니다.

0

예, 따옴표로 묶는 것이 트릭을 수행하는 것 같습니다.

mkdir "x y" 
mkdir x\ y/.svn 
find . -name '.svn' | awk '{print "rm -rf \""$0"\""}' | bash 

그리고 마지막으로 :

ls x\ y 
total 8 
drwxrwxr-x 6 dylan dylan 4096 Dec 13 06:09 .. 
drwxrwxr-x 2 dylan dylan 4096 Dec 13 06:11 . 
0
find . -type d -name '.svn' -delete 

현재 버전 GNU find은 "-delete"작업을 얻었습니다.

+0

이 삭제는 디렉터에게도 적용됩니까? – anishsane

+0

네, 그렇습니다. 필자의 코드 예제에서 나는 이것을 "-type"으로 보여 주었는데, 이는 디렉토리를 의미한다. – Perleone

1
find . -name '*.svn' | while read x; do rm -r "$x" ; done 
+0

나는 파이프가 읽음을 먹을 것을 잊어 버린다. –

0

저장소의 깨끗한 복사본이 필요한 경우 SVN export command을 사용 했습니까?

그런 다음 이름에 공백이있는 디렉토리를 포함하여 .svn 폴더가없는 저장소의 모든 디렉토리의 복사본을 받게됩니다.

+0

내 프로젝트를 다른 회사에서 구입했습니다. HIs .svn 디렉토리는 다른 서버 용이었습니다. –

관련 문제