把日常工作经常查看压缩包文件列表的场景,整理为shell脚本,并列表不同的实现方法。
脚本支持多种常见压缩格式(如.jar/.zip/.rar/.tar等),通过判断文件后缀名调用对应的解压工具命令查看内容列表。
运行环境:
- windows-10-businesseditions-22h2-x64、centos-7.9.2009-x64
- cygwin
- winrar
- 7-zip
1、查看压缩包文件列表演示
查看 .jar 压缩包文件列表

查看 .zip 压缩包文件列表

2、查看压缩包文件列表shell脚本
#!/bin/bash
echo "###################################################"
echo "# subject: 查看压缩包文件列表"
echo "# date: 2021.03.15"
echo "# author: 狂龙骄子"
echo "# blogurl: https://blog.csdn.net/sn_keys"
echo "# remark: 使用到的解压缩工具,必须提前安装。参考 http://tldp.org/howto/bzip2-5.html"
echo "# 调用方法:/opt/viewzipdetail.sh '/路径/文件名'"
echo "# history: "
echo "# 2021.03.15: new"
echo "###################################################"
# 设置环境变量:解决中文乱码
export lesscharset=utf-8
# 获取传入的文件
file_name="$1"
# 判断是否为文件
if [ ! -f "${file_name}" ]; then
echo "error: file does not exist."
exit 1
fi
# 判断文件后缀名并使用对应方式打开
case "${file_name}" in
*.jar|*.war|*.ear)
jar -tvf "${file_name}" ;;
*.rar)
#rar -v "${file_name}" ;;
unrar -l "${file_name}" ;;
*.tar)
tar -tvf "${file_name}" ;;
*.tgz)
tar -tzvf "${file_name}" ;;
*.tar.bz2)
# this one work for the unmodified version of tar
bzip2 -cd "${file_name}" | tar tvvf - ;;
#*.tar.bz2)
# #this one works with the patched version of tar
# tyvvf "${file_name}" ;;
#*.tar.bz2)
# tar -tjvf "${file_name}" ;;
*.tar.gz)
tar -tzvf "${file_name}" ;;
*.tar.z|*.tar.z)
tar tzvvf "${file_name}" ;;
*.bz2)
bzip2 -cd "${file_name}" ;;
*.z|*.z)
gzip -dc "${file_name}" ;;
*.gz)
gzip -dc "${file_name}" ;;
*.zip)
#zip -sf "${file_name}" ;;
unzip -l "${file_name}" ;;
*.1|*.2|*.3|*.4|*.5|*.6|*.7|*.8|*.9|*.n|*.man)
file=`file -l $1`
file=`echo $file | cut -d ' ' -f 2`
if [ "$file" == "troff" ]; then
groff -s -p -t -e -tascii -mandoc "${file_name}"
fi ;;
*)
cat "${file_name}" ;;
esac
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论