Linux & SVN : KEEP 디렉토리 구조를 제외한 모든 버전의 파일을 제거하는 방법은 .svn dirs를 무시합니까?


9

내 저장소에서 모든 버전이 지정된 파일을 제거하고 싶지만 버전이 지정된 디렉토리 구조를 유지하십시오. 분명히 모든 .svn 디렉토리를 그대로 유지하고 싶습니다.

즉, 디렉토리 구조 자체를 손상시키지 않고 작업 복사본의 디렉토리 구조를 완전히 비우고 싶습니다.

예를 들어,이 구조에서 파일을 제거하십시오.

dir/
    .svn/
        [files]
    svsubdir1/
        file1
        .svn/
            [files]
    subdir2/
        file2
        file3
        file4
        .svn/
            [files]
        subsubdir1/
            file5
            .svn/
                [files]

결과는 다음과 같습니다.

dir/
    .svn/
        [files]
    svsubdir1/
        .svn/
            [files]
    subdir2/
        .svn/
            [files]
        subsubdir1/
            .svn/
                [files]

나는 일종의 find명령이나 이것을 달성하기 위해 무언가를 찾고 있는데 명령을 구성하는 데 문제가 있습니다. 도와 주셔서 감사합니다!


내가하는 이유는 "버전"으로 개발되었지만 이전에는 개정 관리를받지 않은 웹 응용 프로그램이 있기 때문입니다. SVN 개정 관리하에두고 싶습니다. 이력 참조를 쉽게하기 위해 점진적으로 이전 버전이 포함 된 4 개의 다른 "백업"폴더에서 4 가지 버전의 진행률을 복제하려고합니다. 파일이 삭제되면 최신 파일을 계층 구조로 복사하여 최신 버전을 시뮬레이션 할 수 있습니다. 모든 것이 의미가 있는지 확실하지 않습니다. :)
Brian Lacy

1
버전 1.7 이후 (2011 년 10 월) SVN에는 더 이상 여러 ".svn"디렉토리가 없지만 최상위 레벨에는 하나의 .svn 디렉토리 만 있습니다. 참조 subversion.apache.org/docs/release-notes/1.7.html#wc-ng
리치

답변:


10
find dir/ -path '*/.svn' -prune -o -type f -print

청구서에 맞아야합니다 (대부분은 찾기 맨 페이지에서 제공 -path). 덜 파이프하고 체크 아웃하십시오. 그것이하는 일은 먼저 찾은 것입니다 (경로는 .svn으로 끝나고이 디렉토리로 되돌아 가지 않습니다) 또는 (파일 인 경우 인쇄하십시오).

좋아 보인다면

find dir/ -path '*/.svn' -prune -o -type f -exec rm {} +

+ 버전은 모든 파일을 하나의 rm 명령으로 묶습니다. 편집증이라면 트리 ( cp -a dir/ otherdir/) 의 백업을 먼저 유지하십시오.


완벽한 솔루션, 그것이 바로 내가 필요한 것입니다! 고마워요 Derf!
Brian Lacy

'-exec rm {} +'대신 더 직관적 인 '-delete'옵션을 사용할 수도 있습니다.
Tim Bielawa

1
@Tim find 맨 페이지에 따르면 -delete깊이 우선이므로 -prune폴더 자체를 검사하기 전에 폴더 내부의 파일을 검사하기 때문에 충돌이 발생 합니다. 다른 해결책 ( -delete 옵션을 사용하는 -not -path ...대신 -path ... -prune사용)
DerfK

좋은 캐치!
Tim Bielawa

다양한 시나리오에서 수년에 걸쳐이 트릭 (또는 유사한)을 여러 번 사용했습니다. 다시 한번 감사드립니다, @DerfK. :)
Brian Lacy

2
찾기 . -not-경로 "* /. svn / *"및 -type f 및 -exec / bin / rm '{}'\;

트릭을해야합니다.


팁이지만 대신 대신 -exec /bin/rm '{}'사용할 수 있습니다 -delete.
Aaron Copley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.