如何在 Artifactory 中列出子文件夹

Wim*_*nen 6 artifactory

我正在尝试编写一个脚本来清理 Artifactory 中通用文件存储库中的旧版本。我想第一步是查看存储库并检查其中有哪些版本。

每个构建都显示为 的子文件夹/foo,因此例如我有文件夹/foo/123/foo/124/foo/125/ 等。

似乎没有lsordir命令。所以我尝试了search命令:

jfrog rt search my-repo/foo/*
Run Code Online (Sandbox Code Playgroud)

但这递归地列出了所有文件,这不是我要找的。我只需要直接子文件夹的列表。我也试过

jfrog rt search my-repo/foo/* --recursive=false
Run Code Online (Sandbox Code Playgroud)

但这不会返回任何结果,因为搜索命令只返回文件,而不是文件夹。

如何列出 Artifactory 存储库中给定文件夹的子文件夹?

can*_*Now 10

使用curl 和jq 来实现这一点还有另一种方法

curl -s http://myatifactory.domain:4567/artifactory/api/storage/myRepo/myFolder | jq -r '.children[] |select(.folder==true) |.uri'
Run Code Online (Sandbox Code Playgroud)

说明:Curl用于获取文件夹信息,并将其通过管道传输到JQ,然后 JQ 显示键值为的数组uri的所有键。childrenfoldertrue

只是为了更容易理解 -curl 获取的 json 看起来像这样(来自神器文档的示例)

{
"uri": "http://localhost:8081/artifactory/api/storage/libs-release-local/org/acme",
"repo": "libs-release-local",
"path": "/org/acme",
"created": ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ),
"createdBy": "userY",
"lastModified": ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ),
"modifiedBy": "userX",
"lastUpdated": ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ),
"children": [
{
            "uri" : "/child1",
            "folder" : "true"
        },{
            "uri" : "/child2",
            "folder" : "false"
         }
]
}
Run Code Online (Sandbox Code Playgroud)

对于它,命令的输出将为/child1.

当然,这里假设人工仓库myRepo允许匿名读取。


小智 6

您应该在这里查看 AQL(Artifactory Query Langage):https ://www.jfrog.com/confluence/display/RTF/Artifactory+Query+Language

例如,以下 AQL 将检索位于“foo”文件夹下“my-repo”中的所有文件夹,并将显示按文件夹名称排序的结果:

items.find(
    {
        "type":"folder",
        "repo":{"$eq":"my-repo"},
            "path":{"$eq":"foo"}
    }
)
.include("name")
.sort({"$desc":["name"]})
Run Code Online (Sandbox Code Playgroud)

对于清理,您还可以查看以下示例,其中列出了一个多月前创建但从未下载过的 10 个最大工件:

items.find(
    {
        "type":"file",
        "repo":{"$eq":"my-repo"},
        "created":{"$before":"1mo"},
        "stat.downloads":{"$eq":null}
    }
)
.include("size","name")
.sort({"$desc":["size"]})
.limit(10) 
Run Code Online (Sandbox Code Playgroud)


Alp*_*aca 4

jfrog cli 现在包含--include-dirs搜索选项。

命令:

jf rt search --recursive=false --include-dirs path/
Run Code Online (Sandbox Code Playgroud)

基本上会像一个ls.