在7z文件中查找文件内部的模式



我有数千个名为data1.7z、data2.7z等的7z文件。每个文件的内容都是data1.log、data2.log等。我可以使用CCD_ 1。我想做的是grep或在.log文件中找到一个模式,而不需要提取所有内容。这些文件包含IP地址,希望在每个.log文件中从另一个名为ipaddress.txt的文件中找到一组IP地址,并打印出与.txt文件中任何IP匹配的行。

提前谢谢。

这是不可能的。无法对压缩数据进行grep
与7z存储未压缩文件的压缩文件名不同,实际文件数据以修改状态存储(由压缩过程更改(。

如果你想搜索它,你必须解压缩它。

你能做的是用脚本自动执行这个过程,这样就不会留下未压缩的文件。

例如,7z可以输出到标准输出,因此您可以将结果直接管道传输到grep:

for FILE in *.7z; do
7z e -so ${FILE} | grep '127.0.0.1'
done

或者,您可能希望正常提取文件,然后在grep没有发现任何内容的情况下将其删除,或者如果grep确实找到了您要查找的IP,则将其保持未压缩状态以供进一步检查:

for FILE in *.7z; do
7z e ${FILE}
LOG=${FILE%7z}log
grep -q '127.0.0.1' ${LOG}
if [ $? -ne 0 ]; then
rm ${LOG}
fi
done

最新更新