Svn

我如何剪輯“查找”命令的結果?

  • September 20, 2010

替代文字我執行以下命令:-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’:不是目錄

也許我們必須讓“find”命令給我們沒有“db/fs-type/format”的路徑,換句話說,我們必須剪裁“find command”的輸出……但我怎麼能做到這一點???

這裡的問題不是 find 命令。find 命令正在執行您告訴它執行的操作,例如,它正在查找fs-type在整個文件系統中命名的所有出現的正則文件。

然後,您將 find 命令的結果傳遞給svnlook tree.

svnlook tree命令需要一個目錄,因為它是參數而不是您提供的正常文件。您傳遞到的目錄svnlook tree應該有一個名為的文件format,其中包含儲存庫的修訂號,這就是您收到上述錯誤消息的原因。

它是svnlook給你你所看到的錯誤消息的命令。您需要做的是找出路徑/var/lib/svn/repos/中的哪個目錄是正確的傳遞給svnlook.

您還可以通過閱讀有關svn的一些資訊來幫助自己,以更好地了解您正在使用的系統。

編輯

沒有簡單的方法可以找到所有 svn 儲存庫

您可以搜尋系統上的所有 .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 /為上面命令的輸出中列出的每個儲存庫找到您想要的內容。

上述方法的唯一問題是,如果目錄樹已被刪除,並且它包含受 svn 控制的項目,並且該項目位於唯一的儲存庫中,那麼您將找不到它。

引用自:https://serverfault.com/questions/182753