使用unzip与grep管道查询epub中opf文件时如何显示文件名
解决方案
方法1:循环遍历逐个处理(通用兼容)
直接用Shell循环遍历所有epub文件,只提取其中的opf文件内容进行搜索,同时标记来源文件名:
for epub in *.epub; do unzip -p "$epub" '*.opf' | grep -a -H --label="$epub" 'dc:date' done
unzip -p:直接将epub内的opf文件内容输出到标准输出,不生成临时文件grep --label="$epub":把标准输入的内容标记为当前epub文件名,配合-H就能显示对应的epub文件-a:强制将文件当作文本处理,避免二进制识别问题
方法2:使用zipgrep工具(更简洁)
如果系统自带zipgrep(多数Linux发行版、macOS默认包含),可以直接用它搜索压缩包内的指定文件,自带文件名显示:
zipgrep -a 'dc:date' *.epub '*.opf'
-a:将压缩包内的文件视为文本处理*.opf:限定只搜索epub内的opf格式文件,避免无关文件干扰
内容的提问来源于stack exchange,提问作者user21100580
相关产品推荐
相关产品推荐

