我怎么可以剪切“查找”命令的结果?

替代文字 我执行以下命令:-find / -type f -name fs -type -exec svnlook tree {} \; | egrep“/ $”

结果是svnlook:无法打开文件'/ var / lib / svn / repos / b1me / products / payone / generic / code / core / db / fs -type / format':不是目录svnlook:无法打开文件'/ var / lib / svn / repos / b1me / products / payone / generic / code / fees / db / fs-type / format':不是目录

也许我们必须让“查找”命令给我们没有“db / fs-type / format”的path换句话说我们必须剪切“查找命令”的输出….但我怎么能做到这一点?

这里不是find命令。 find命令正在执行正在执行的操作,例如在整个文件系统中查找所有名为fs-type的regulare文件。

然后,您将find命令的结果传递给svnlook tree

svnlook tree命令期望一个目录,因为它的参数不是像你给的那样的常规文件。 你传递给svnlook tree的目录应该有一个名为format的文件,它包含版本库的版本号,这就是为什么你会得到上面的错误信息。

这是svnlook命令给你看到的错误信息。 你需要做的是找出path/var/lib/svn/repos/中的哪个目录是传递给svnlook的正确目录。

你也可以通过阅读关于svn的一些信息来帮助你自己,以便更好地理解你正在使用的系统。

编辑

没有简单的方法来find所有的svn存储库

您可以search系统上的所有.svn目录,然后在其上运行svn info ,然后检查“ Repository Root: ”的输出。 如果在一个公共仓库中有很多项目,那么这个输出将需要通过uniq

 sudo find / -name .svn -exec dirname {} \; | \ xargs svn info | grep "Repository Root:" | uniq \ sed 's/Repository Root: file:\/\///' 

你会得到像/var/svn/repos这样的输出。

以上列出了散布在文件系统中的项目的所有存储库。 那么你可以

svnlook tree /var/svn/repos |grep /从上面的命令输出中find每个存储库所需的内容。

上面的方法唯一的问题是,如果一个目录树已被删除,它包含一个项目下svn控制和项目是在一个独特的存储库,那么你不会find它。

你可以使用“-path”参数与你喜欢的模式

我的理解是,你想跳过结果中的目录。

你可以用-path <path_to_skip> -prune参数来做到这一点