我们有一个包含数千个文件夹和子文件夹的代码批量仓库,我想要以文件名或某个单词为关键字在这个仓库中进行搜索。
Root folder
a\
b\
c\
d\
e\
f\ab\
f\ab\cd.txt
我想搜索 cd.txt 但不知道它在 SVN 存储库中的位置,因此我想在 SVN 的根文件夹中执行搜索,在其中输入文件名 cd.txt 并运行命令,将检查每个文件夹并显示文件详细信息结果...
希望要求清楚。你能否帮我处理一下?
我们有一个包含数千个文件夹和子文件夹的代码批量仓库,我想要以文件名或某个单词为关键字在这个仓库中进行搜索。
Root folder
a\
b\
c\
d\
e\
f\ab\
f\ab\cd.txt
我想搜索 cd.txt 但不知道它在 SVN 存储库中的位置,因此我想在 SVN 的根文件夹中执行搜索,在其中输入文件名 cd.txt 并运行命令,将检查每个文件夹并显示文件详细信息结果...
希望要求清楚。你能否帮我处理一下?
以下内容对我有效(svn版本为1.4.6)
svn list -R <URL> | grep "<file_pattern>"
如果文件在您的工作副本中,且您正在使用svn 1.5:
svn list --depth infinity | grep <filename>
或者svn的早期版本:
find . -name <filename> -not -path '*.svn*'
如果您需要查找历史记录中的文件(已删除或移动):
svn log -v | less
并使用以下方式进行搜索:
\<filename><return>
... | select-string <filename>
来替换grep
。 - MarnixKlooster ReinstateMonica... | find "<filename>"
也可以作为grep的替代。 注意:需要在filename周围加上引号。 - Raystormsvn co --depth empty REPOURL RepoDir
,cd RepoDir
,然后使用命令 svn list --depth infinity
从 SVN 服务器获取所有文件路径(如果有数百万个文件,则可能会产生数百万行)。 - Ivan Akcheurov如果您可以访问存储库本身(例如在svn主机文件系统上),请使用以下命令:
svnlook tree [path_to_repo] | grep [file_name]
或者搜索所有仓库(如果您设置了多个仓库)。
for i in \`ls [path_to_repos_dir]`; do echo $i; svnlook tree [path_to_repos_dir]/$i | grep -i [file_or_folder_name]; done
将显示文件在仓库中的完整路径(如果找到)。for i in `ls /u01/svn-1.6.17/repos`; do echo $i; svnlook tree --full-paths /u01/svn- 1.6.17/repos/$i | grep -i somefile.txt; done
如果需要静态副本,请将输出重定向到文件中。
假定使用 Nix 操作系统。
svn list --depth infinity <your-repo-here>
可以获取版本库中文件的列表,然后使用 svn cat
获取内容。您可以在 list
命令中添加 --xml
关键字以使解析变得更加简单。
grep
。此外,如果您需要将输出与之前/之后的XML输出连接起来,则可以使用--incremental
模式。 - trysis我不确定使用额外的工具来过滤搜索结果,比如svn+grep
是否是一个好主意。这些工具,如grep
或svn-crawler
可能在Windows或其他操作系统上不可用/无法工作,您需要安装/升级它们。
您可以使用1个单独的svn命令来解决此任务,使用--search
标志支持glob模式:
> svn ls -R --search "readme.md"
branches/0.13.x/readme.md
trunk/readme.md
> svn ls -R --search "*.md"
branches/0.13.x/189.md
branches/0.13.x/readme.md
trunk/189.md
trunk/readme.md
关于 svn ls --search
选项的更多信息:
> svn ls -h
list (ls): List directory entries in the repository.
usage: list [TARGET[@REV]...]
List each TARGET file and the contents of each TARGET directory as
they exist in the repository. If TARGET is a working copy path, the
corresponding repository URL will be used. If specified, REV determines
in which revision the target is first looked up.
...
Valid options:
...
--search ARG : use ARG as search pattern (glob syntax, case-
and accent-insensitive, may require quotation marks
to prevent shell expansion)
VisualSVN Server 4.2 支持在 Web 界面中按名称查找文件。在 演示服务器 上尝试这个新功能。
您可以在 https://www.visualsvn.com/server/download/pre-release/ 下载 VisualSVN Server 4.2.0。请参阅 https://www.visualsvn.com/server/download/ 中的发行说明。