怎样解压Centos某个目录下的所有zip压缩文件

比如Centos7.9上的目录 /opt/mydata/ 下有很多子目录,有些子目录下还有子目录,现在希望遍历所有的目录,把里面后缀为zip的压缩文件解压出来,每个压缩文件就解压在相应的目录中,解压完删除相应的压缩文件,该怎么做?

您可以使用Shell脚本或者命令来实现这个任务。下面是一个示例Shell脚本,它可以在CentOS 7.9上执行:

bash 复制代码
#!/bin/bash

# 指定目录
base_dir="/opt/mydata"

# 遍历目录及子目录
find "$base_dir" -type f -name "*.zip" | while read zip_file; do
    # 获取目录路径
    dir_path=$(dirname "$zip_file")

    # 进入目录
    cd "$dir_path" || exit

    # 解压缩文件
    unzip -o "$zip_file"

    # 删除压缩文件
    rm -f "$zip_file"

    # 返回原始目录
    cd - || exit
done

请确保将脚本保存为可执行文件,例如extract_and_remove.sh,并使用以下命令添加执行权限:

bash 复制代码
chmod +x extract_and_remove.sh

然后,您可以运行脚本来执行所需的操作:

bash 复制代码
./extract_and_remove.sh

这个脚本使用find命令查找所有后缀为.zip的文件,然后使用while循环逐个处理。在每次循环中,它提取目录路径,进入目录,解压缩文件,删除压缩文件,最后返回原始目录。请确保在使用脚本之前备份重要数据,以防发生意外。

问:子目录的子目录也会被查询么?

是的,上述脚本中的find命令会递归地搜索指定目录及其所有子目录,因此会包括子目录的子目录在内。这是由-type f选项指定的,它表示只查找普通文件(不包括目录)。

所以,脚本中的find "$base_dir" -type f -name "*.zip"会查找/opt/mydata/目录及其所有子目录中所有后缀为.zip的文件,包括子目录的子目录中的文件。

问:如果压缩文件有密码怎么办?比如密码为AAbb6688?

如果每个ZIP压缩文件都有相同的密码,你可以使用unzip命令的-P选项来指定密码。下面是修改后的脚本:

bash 复制代码
#!/bin/bash

# 指定密码
password="AAbb6688"

# 指定目录
base_dir="/opt/mydata"

# 遍历目录及子目录
find "$base_dir" -type f -name "*.zip" | while read zip_file; do
    # 获取目录路径
    dir_path=$(dirname "$zip_file")

    # 进入目录
    cd "$dir_path" || exit

    # 解压缩文件(指定密码)
    unzip -o -P "$password" "$zip_file"

    # 删除压缩文件
    rm -f "$zip_file"

    # 返回原始目录
    cd - || exit
done

这个脚本添加了一个password变量,然后在unzip命令中使用-P "$password"来指定密码。请确保密码的安全性,并根据实际情况修改脚本中的密码。

相关推荐
童槿顏丶31 分钟前
GitLab部署到Linux
linux·运维·gitlab
空堂与归3 小时前
Linux 命令实战:AI 开发者必备的终端操作手册
linux
牢姐与蒯5 小时前
Linux基本指令及知识点(二)
linux·运维·服务器
小玮看世界5 小时前
[Python]从“脏”数据到优雅实现:一个IoT滑动窗口最大值问题的测试驱动优化实录
linux·前端·python
RisunJan6 小时前
Linux命令-spell(Unix 拼写检查工具 —— 文本校对的基础利器)
linux·运维·unix
BLi4ee6 小时前
WSL 文件资源管理器左侧 Linux / Ubuntu 入口恢复
linux·ubuntu
BLUcoding7 小时前
Ubuntu 开机自启 Kiosk 模式浏览器全屏展示网页配置指南
linux·运维·ubuntu
Kina_C9 小时前
Keepalived 配置管理进阶:使用子配置文件实现模块化与高可读性
linux·网络·keepalived
wsad05329 小时前
CentOS Stream 10 配置静态 IP 完整指南
linux·tcp/ip·centos
Ai拆代码的曹操9 小时前
K8s 实战:CrashLoopBackOff 状态下 kubectl logs 拿不到日志的三层排查方案
linux·docker·kubernetes