재귀 모드 모든 하위 폴더를 탐색하고 발견 된 모든 SVN 저장소 URL과 경로를 나열하는 스크립트를 찾고 있습니다.폴더의 모든 SVN 저장소 URL을 재귀 모드로 나열
사용자의/home 폴더에 사용됩니다.
재귀 모드 모든 하위 폴더를 탐색하고 발견 된 모든 SVN 저장소 URL과 경로를 나열하는 스크립트를 찾고 있습니다.폴더의 모든 SVN 저장소 URL을 재귀 모드로 나열
사용자의/home 폴더에 사용됩니다.
반복적으로 디렉토리를 찾고, 각각에 대해 SVN 정보를 얻으려고합니다. 성공한 경우 디렉토리로 내려 가서 디렉토리 이름을 인쇄하십시오.
find -type d -exec bash -c "svn info {} > /dev/null 2> /dev/null" \; -prune -print
이렇게하면 디렉토리가 나열됩니다.
저장소 정보를 원한다면 find exec 명령의 중간에 저장소 정보를 추가 할 수 있습니다.
find -type d -exec bash -c "svn info {} 2> /dev/null | grep URL" \; -prune -print
편집 : 나는 단지 .svn
하위 디렉토리의 존재를 테스트하여 더 나은 결과를 찾을
. 그런 다음 svn info
이 끝에 한 번 호출되고 경로 및 URL에 대해 grepped됩니다. (파일 이름의 공백을 막으려면 -0을 사용하십시오.)
find -type d -exec test -d "{}/.svn" \; -prune -print0 | xargs -0 svn info | grep -e '\(Path\|URL\)'
어떤 종류의 제한 사항에 따라 다른 방법이있을 수 있습니다. 가장 쉬운 방법은 svn ls -R | grep -v "\."
을 사용하여 현재있는 저장소 위치에서 모든 하위 폴더를 가져 와서 각 줄 앞에 LS의 루트에 URI를 추가하는 for
루프로 전달하는 것입니다. 그러나 "."이 포함되지 않은 파일이있는 경우에는 적합하지 않습니다. 폴더로 감지 될 것입니다. 불행히도 svn ls
은 파일/폴더별로 필터링 할 수 없으므로 확장명이없는 파일 이름을 처리해야하는 경우 소스를 체크 아웃하고 찾기를 사용하여 폴더 이름을 가져 오는 것과 같은 다른 작업을 수행해야합니다.
현재있는 폴더는 SVN 저장소가 아니지만 자손 중 하나에있을 수 있습니다. – Pentium10
user_home=... # fill in the user's home dir
old_dir=/../
find $user_home -name .svn | rev | cut -f2- -d/ | rev | while read line ; do
echo -n "$line"$'\t'
wc -c <<<"$line"
done | sort -t$'\t' -k1,1 -k2,2n | while read dir size ; do
if [[ $dir != $old_dir* ]] ; then
old_dir=$dir
svn info $dir | grep URL
echo PATH: $dir
echo
fi
done
사용자가 공백이있는 디렉토리에 SVN을 저장하지 않기를 바랍니다.
URL을 어떻게 읽나요? 나는'svn info | grep URL'을 스크립트에 넣으시겠습니까? – Pentium10
그러면 디렉토리가 인쇄됩니다. URL을 원하면 각각에 대해'svn info'를 호출하십시오. –
폴더와 URL을 함께 사용하고 싶습니다. 그러나 URL이 가장 중요합니다. – Pentium10