Linux服务器备份ZIP包中查找指定字符串的技术咨询
在Linux下搜索ZIP压缩包内的指定字符串
你之前用的grep -Ril命令只能处理普通文件,没办法直接解析ZIP压缩包的内容,所以没法搜到目标字符串。这里给你几个实用的解决方法:
方法一:用unzip + grep组合(无需额外安装工具)
如果只是搜索单个指定的ZIP包,比如MyWork_20180306.zip,可以用这个命令:
unzip -p /path/MyWork_20180306.zip | grep -il "My_Name"
unzip -p的作用是把压缩包里所有文件的内容直接输出到终端(不会把文件解压到磁盘上,节省空间)- 管道符
|把输出传给grep,-i表示忽略大小写匹配,-l只显示包含目标字符串的文件名
要是你想批量检查所有符合MyWork_yyyymmdd.zip格式的压缩包,可以写个简单的循环:
for zip_file in /path/MyWork_*.zip; do echo "正在扫描 $zip_file..." match_result=$(unzip -p "$zip_file" | grep -il "My_Name") if [ -n "$match_result" ]; then echo "✅ 在 $zip_file 中找到匹配的文件:$match_result" fi done
方法二:用zipgrep(更简洁的专用工具)
如果你的系统安装了zipgrep(一般和zip工具包一起安装),可以直接用这个专门针对ZIP包的搜索命令,用法更直观:
# 搜索单个ZIP包,显示匹配的内容和文件名 zipgrep -i "My_Name" /path/MyWork_20180306.zip # 只显示包含目标字符串的文件名,加上-l参数 zipgrep -il "My_Name" /path/MyWork_20180306.zip
这样就能轻松在ZIP压缩包里找到包含"My_Name"的文件啦~
内容的提问来源于stack exchange,提问作者Deepesh kumar Gupta
相关产品推荐
相关产品推荐

