首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AEM 6.3中删除遵循命名模式的多个页面

在AEM 6.3中删除遵循命名模式的多个页面
EN

Stack Overflow用户
提问于 2019-08-28 01:52:25
回答 1查看 590关注 0票数 2

在AEM内容层次结构中,我有一个文件夹,其中有4000页。在这些页面中,有3700页遵循xyz-1、xyz-2、xyz-3的命名约定,直至xyz-3700。我要求删除这些以xyz开头的页面,但不删除其他300个具有不同名称的页面。我用*尝试了下面的命令,但这不起作用。有人能帮我解决这个问题吗?

curl“-F":operation=delete”-F“:applyTo=/content/foo/-F/xyz*”http://localhost:4502 -u管理员:管理员

EN

回答 1

Stack Overflow用户

发布于 2019-08-28 09:24:25

Curl需要完整的路径来执行该语句。您可以像下面这样传递单独的路径,但它不会解决您的问题,因为您有很多页面

代码语言:javascript
复制
curl -u admin:admin -F":operation=delete" -F":applyTo=/content/aem-flash/en/xyz-1" -F":applyTo=/content/aem-flash/en/xyz-2" http://localhost:4502

您必须编写一个脚本来删除所有这些文件。有多种选择,您可以编写独立代码并将其作为包进行部署,也可以从Eclipse连接

如果不想部署包,可以使用groovy脚本来执行代码。

如果所有页面都在同一个父节点中,下面的Groovy脚本应该可以满足您的需求。如果您想查询整个站点,请相应地更新查询

代码语言:javascript
复制
import javax.jcr.Node

def buildQuery(page) {
    def queryManager = session.workspace.queryManager;
    def statement = 'select * from cq:Page where jcr:path like \''+page.path+'/xyz-%\'';
    queryManager.createQuery(statement, 'sql');
}

final def page = getPage('/content/aem-flash/en/')
final def query = buildQuery(page);
final def result = query.execute()

result.nodes.each { node ->
println 'node path is: ' + node.path
node.remove();
session.save();
}

使用CURL的

解决方案

我找到了另一种单独使用CURL命令的方法,但它会向服务器发送多个请求,这可能不太好。

即使环境中没有记录,下面的命令也会发出4000个请求,这就像一个循环。

由于Windows默认情况下不支持regex,因此这在命令提示符下不起作用。它应该可以在linux环境中很好地工作。如果你想让它在Windows中执行,你可以使用Git bash控制台或其他工具。我在Git Bash中尝试过,它工作得很好。

代码语言:javascript
复制
curl -X DELETE "http://localhost:4502/content/aem-flash/en/xyz-[0-4000]" -u admin:admin
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57679919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档