linux - 创建包含特定文本的文件压缩包

标签 linux shell

我在一个目录中有 20 多个 json 文件,每个文件都有一个属性“userType”,其值可以是 customer 或 employee,我需要在这里创建 2 个 zip customer.zip,它将包含所有包含文本“usertype”的文件: employee.zip 中的“客户”和剩余的 json

我可以 grep 获取文件名列表的文本:

grep \"userType\":\"customer\" *.json

这给了我 json 文件的列表,我应该如何将这个列表传递给 zip 创建命令

最佳答案

grep -lxargs 一起使用:

grep -lZ '"userType":"customer"' *.json | xargs -0 zip customer.zip

grep -lZ '"userType":"employee"' *.json | xargs -0 zip employee.zip

PS:grep 中的 -Z 选项在每个文件名后输出一个 NUL 字节,而 xargs -0 读取一个 NUL 分隔输入。这用于处理带有空格、换行符和 glob 字符的文件名。

关于linux - 创建包含特定文本的文件压缩包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52954417/

相关文章:

c - 我如何让 child 打印杀死它的信号?

linux - 使用 grep 检索子字符串

python - 通过 ssh 打开另一个处理程序到 python 中的远程主机

linux - 在 Unix 上的核心 CLR 中 P/调用和重叠 I/O?

linux - 使用 grep 搜索多个模式的功能

linux - 从 Expect 捕获返回码

Python 脚本输出没有出现在 CMD 中

linux - 手机上的 SD 卡图像无法在 PC 上显示

windows - telnet 输出使用 .bat 文件将其保存到文件

xml - 如何从 Unix 命令行中删除 XML 标签?