Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >获取包含字符串或模式的文件列表

获取包含字符串或模式的文件列表
EN

Stack Overflow用户
提问于 2022-02-20 02:57:19
回答 1查看 928关注 0票数 1

是否存在用于检索文件夹中的文件列表或包含给定字符串、字符串集或模式的文件夹集的分级模式?

我的项目产生RPM,并且正在使用Nebula类型(伟大的软件包!)有几种不同类型的文件需要后处理。我试图生成包含字符串的文件列表,这些字符串是后处理的指示符。例如,包含"@ doc“的文件需要由doc生成器脚本处理。包含"@HOSTNAME@“和"@HOSTFQDN@”的文件需要由sed处理,以便用实际主机名或主机fqdn替换字符串。

包中的搜索根目录将是src\main\resources。其结果是,构建脚本设置后安装脚本命令--类似于:

代码语言:javascript
代码运行次数:0
复制
postInstall('/opt/product/bin/postprocess.sh ' + join(filesContainingDocs, " "))
postInstall('/bin/sed -i -e "s/@HOSTNAME@/$(hostname -s)/" -e s/@HOSTFQDN@/$(hostname)/" ' + join(filesContainingHostname, " ")

我可以搞清楚后置语法。我很难找到对文件内容(而不是文件名称)进行操作的任何常规Gradle 'things‘(即FileTree)的过滤器。我将如何填充filesContainingDocs和filesContainingHostname --大致如下所示:

代码语言:javascript
代码运行次数:0
复制
filesContainingDocs = FileTree('src/main/resources', { contents.matches('@doc') }
filesContainingHostname = FileTree('src/main/resources', { contents.matches('@(HOSTNAME|HOSTFQDN)@') }

虽然后处理脚本可以简单地执行grep,但我们产品中的几个RPM相互覆盖,每个RPM只应该对它提供的文件进行后处理,所以在最终安装的文件夹上建立一个通用的grep是不可行的--它会捕获其他RPM提供的文件。在我看来,在构建时,我应该能够从包含给定RPM项目的更多源文件中生成正确的静态文件列表。

它不必是FileTree --运行像findstr /s /m /c:"@doc" src\main\resources\*.conf这样的命令(唉,构建平台是findstr /s /m /c:"@doc" src\main\resources\*.conf)会在stdout中生成答案,但我不知道如何将这个结果放入一个对象Gradle可以用来扩展结果的对象。(我还怀疑有一种“更沉重的方式”来做到这一点。)

文件集和这些文件的内容通常是相当小的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-20 16:40:20

--我很难找到对文件内容(而不是文件名称)进行操作的任何常规Gradle 'things‘(即FileTree)的过滤器。

您可以在Gradle文件树上应用任何您可以想象到的过滤器,最后它只是在JVM中运行的Groovy (或Kotlin)代码。每个级别的FileTree只不过是File对象的一个(延迟计算的)集合。为了过滤这些File对象,您可以读取它们的内容,例如,用同样的方式在Java中读取它们。Groovy甚至提供了一个JDK enhancement for the Java class File,其中包括用于此目的的简单方法getText()。现在,您可以轻松地筛选包含特定字符串的文件:

代码语言:javascript
代码运行次数:0
复制
filesContainingDocs = fileTree('src/main/resources').filter { file ->
    file.text.contains('@doc')
}

使用Groovy,您可以像.getText()一样以访问字段的方式调用getter(本例中是.text)。

如果一个简单的contains检查还不够,Groovy增强甚至提供了CharSequence/string实例上的matches(Pattern pattern)方法来执行常规的扩展检查:

代码语言:javascript
代码运行次数:0
复制
filesContainingDocs = fileTree('src/main/resources').filter { file ->
    file.text.replace('\r\n','\n').matches('.*some regex.*') }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71193701

复制
相关文章
JSON序列化 反序列化 自定义属性字段
FastJson中的注解@JSONField,一般作用在get/set方法上面,常用的使用场景有下面三个: 修改和json字符串的字段映射【name】 格式化数据【format】 过滤掉不需要序列化的字段【serialize】
Qwe7
2022/04/02
1.1K0
Logstash为什么那么慢?—— json序列化
今天跟峡谷金桥聊天,询问起Logstash的性能,金桥提示说Logstash中json的序列化是浪费性能的一方面。于是便有了下面的测试: 第一步,造数据 首先需要造一份数据,数据可以通过logstash的generator来造。 input{ generator{} } output{ file{ path => "E:/test.log" } } 生成的数据格式如下: {"message":"Hello world!","@version":"1","@tim
用户1154259
2018/01/17
1.3K0
Logstash为什么那么慢?—— json序列化
在MVC中使用Json.Net序列化和反序列化Json对象
在.Net的MVC开发中,经常会使用到Json对象,于是,系统提供了JsonResult这个对象,其本质是调用.Net系统自带的Json序列化类JavaScriptSerializer对数据对象进行序列化。但是这个系统自带的Json序列化对象方法没有Json.Net好用,于是打算有些时候用Json.Net替代默认的实现。
深蓝studyzy
2022/06/16
1.2K0
Json序列化在golang中的应用
golang对json序列化和反序列化的操作实在是难受,所以说用习惯了高级语言特性,再转到这些偏原生的写法上就会很难受。
happlyfox
2021/03/25
2.2K0
spring/jackson:实现对保存JSON字符串的字段自动序列化和反序列化
对于spring-web项目,在数据库设计时,当我们想增加一个字段时,并不希望修改表结构,希望设计一个专用的扩展字段,将增加的扩展字段以一个JSON字符串形式保存在这个专用字段中。 spring对JSON的序列化和反序列化是依赖jackson来完成的。 数据发送给前端的时候,我们希望jackson在序列化一个数据库记录对象时以JSON的形式返回这个JSON扩展字段的内容,而不是一个String, 同时前端也能以一个JSON的形式定义这个JSON扩展字段,服务端在收到请求jackson在反序列化时能自动将这个JSON字段反序列化为String.这样省去了手工写代码转换的过程才是最方便的。 举例说明一下吧,以下是一个数据库记录对象,props字段为一个JSON扩展字段可以存储任意字段数据
10km
2022/09/07
1.8K0
在eclipse中没有server(需在选项中设置)
①在软件eclipse下的Help->InstallNew Software->中,在Work with中点击Add,如下,加入
全栈程序员站长
2022/07/25
3.9K0
在eclipse中没有server(需在选项中设置)
Flask 学习-37.Flask-RESTful 序列化输出fields 字段设置
前言 前面一篇使用Flask-RESTful 已经实现查询对象的序列化输出成json,这篇继续讲下一些特殊字段的处理 模型 user 表结构设计 from . import db from passlib.hash import sha256_crypt from datetime import datetime class Users(db.Model): __tablename__ = 'user' # 数据库表名 id = db.Column(db.Integer, primary
上海-悠悠
2022/09/06
9590
Flask 学习-37.Flask-RESTful 序列化输出fields 字段设置
jackson 序列化忽略未知字段: How to Ignore Unknown Properties While Parsing JSON in Java
使用 Jackson API 在Java中解析JSON时的一个常见问题是,当JSON包含未知属性时,即Java类没有与所有JSON属性对应的所有字段时,解析失败。
一个会写诗的程序员
2021/07/23
3.8K0
Golang -- Json序列化
在使用Go Struct的Json Marshal的时候,通过Json To Go Struct工具可以生成结构体,但是当在结构体中只对部分属性赋值的时候,Marshal后的字符串与预期不符,如下所示:
None_Ling
2021/11/24
7650
Python json序列化
Python内置的json模块提供了非常完善的对象到JSON格式的转换。废话不多说,我们先看看如何把Python对象变成一个JSON:
py3study
2020/01/16
2.2K0
Python序列化-json
Python 序列化是将 Python 对象转换为可以存储或传输的格式,如 JSON 或二进制格式。
玖叁叁
2023/04/18
7070
在 .NET 对象和 JSON 互相序列化的时候,枚举类型如何设置成字符串序列化,而不是整型?
默认情况下,Newtonsoft.Json 库序列化和反序列化 JSON 到 .NET 类型的时候,对于枚举值,使用的是整数。然而,在公开 JSON 格式的 API 时,整数会让 API 不易于理解,也不利于扩展和兼容。
walterlv
2023/10/22
7590
MySQL中的json字段
MySQL5.7.8中引入了json字段,这种类型的字段使用的频率比较低,但是在实际操作中,有些业务仍然在用,我们以此为例,介绍下json字段的操作方法:
AsiaYe
2019/12/23
9.1K0
Requests库(二十)为什么请求的json字段传入dict格式才正确而不是json格式
Requests库(十三)利用钉钉机器人打造一个钉钉群定时推送今日头条24小时热闻
雷子
2021/03/15
9550
Retrofit 在 JSON 反序列化的时候提示 UnrecognizedPropertyException 异常
这是因为 retrofit 在反序列化的时候,如果没有找到对应的对象名,将会报错。
HoneyMoose
2023/04/25
5170
Retrofit 在 JSON 反序列化的时候提示 UnrecognizedPropertyException 异常
[C#]JSON反序列化对象--解析JSON文本
This sample deserializes JSON to an object.
科控物联
2022/06/13
1.2K0
[C#]JSON反序列化对象--解析JSON文本
​MySql之json_extract函数处理json字段
在db中存储json格式的数据,相信大家都或多或少的使用过,那么在查询这个json结构中的数据时,有什么好的方法么?取出String之后再代码中进行解析?
一灰灰blog
2022/05/30
13.8K0
python序列化:json,pickl
什么是序列化,把程序中的对象或者变量,从内存中转换为可存储或可传输的过程称为序列化。在 Python 中,这个过程称为 pickling,在其他语言中也被称为 serialization,marshalling,flattening 等。程序中的对象(或者变量)在序列化之后,就可以直接存放到存储设备上,或者直接发送到网络上进行传输。
py3study
2020/01/14
9350
Springboot2.0 + Kotlin自定义json序列化不返回null字段的方法
两种方式: 第一种,在配置文件里加入如下配置: spring: jackson: default-property-inclusion: non_null 第二种:在mvc配置文件里加入如下配置: override fun extendMessageConverters(converters: MutableList<HttpMessageConverter<*>>) { converters.forEach { if (it is MappingJackson2HttpMessa
飞奔去旅行
2019/06/13
1.9K0
JSON序列化接口,JsonSerializable
php中操作json的函数有json_encode(),json_decode()
宣言言言
2019/12/18
1.7K0

相似问题

忽略JSON反序列化过程中的字段

21

(反)创建模型时自动序列化包含JSON的字段

21

在json序列化过程中自动忽略实体的@瞬态字段

20

自定义Json (反)序列化?

10

(反)将类序列化到JSON或从JSON序列化

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档