我可以使用此命令 locate --regex '/.git$' | grep username
来查找系统上的所有 git 存储库,但因为它.svn
出现在存储库的子目录中,所以该命令locate --regex '/.svn$' | grep username
也可以工作。
前者产量约 120 辆,后者产量超过 14,000 辆。
我应该搜索什么文件或目录名来查找 subverson 存储库?
答案1
在 Git 中,每个工作副本都是它自己的存储库。 SVN 则不然。所以如果你真的想找到存储库,并且它们位于默认位置和本地计算机上,这就足够了:
ls /var/svn
假设你真的想找到工作副本, SVN 自 1.7 版起仅将.svn
文件放置在工作副本的顶层,因此该命令
find / -type d -name '.svn'
会工作得很好。或者,如果您使用过早期的 SVN 并且确实散布着这些目录,您可以尝试:
find / -type d -name '.svn' -exec dirname {} \; \
| sort \
| awk 'NR == 1 || $0 !~ "^"LAST { LAST = $0; print}'
这列出了包含.svn
子目录的所有目录,然后仅打印那些不包含另一个目录作为前缀的目录。
我找到了一台计算机locate
,其中包含
$ locate --version
mlocate 0.26
Copyright (C) 2007 Red Hat, Inc. All rights reserved.
This software is distributed under the GPL v.2.
This program is provided with NO WARRANTY, to the extent permitted by law.
在此系统上,采用类似于最后一个find
示例的方法:
locate -r '/\.svn$' \
| sed 's/^\(.*\)$/"\1"/' \
| xargs dirname \
| sort \
| awk 'NR == 1 || $0 !~ "^"LAST { LAST = $0; print }'