怎样解压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"来指定密码。请确保密码的安全性,并根据实际情况修改脚本中的密码。

相关推荐
treacle田15 小时前
达梦数据库-Linux DM主备集群动态增加节点-记录总结
linux·运维·数据库·达梦主备集群动态扩展
ARM|X86+FPGA工业主板厂家15 小时前
基于Jetson TX2的矿用巡检机器人
linux·运维·机器人
杨云龙UP15 小时前
Oracle 19c RMAN历史备份清理失败:CONTROL_FILE_RECORD_KEEP_TIME 问题排查与整改实战
linux·运维·网络·数据库·oracle·rac
Alphapeople15 小时前
moveit真机部署
linux·运维·服务器
Eminem8916 小时前
2、k8s环境规划
linux·运维·kubernetes
打团从来人不齐16 小时前
Linux服务器搭建笔记-008:台式机共享WIFI
linux·服务器·笔记
w2005122417 小时前
K8S控制器管理
linux·云原生·容器·kubernetes
Dream Cosmos17 小时前
Linux 多线程——线程互斥:从抢票问题到 Mutex 底层原理
linux·c++
玖石书17 小时前
Ubuntu 更换 USTC 镜像源完整指南(AMD64 / AARCH64)
linux·运维·ubuntu
zbyyd17 小时前
Linux 进程间通信(IPC):信号、消息队列、共享内存与信号量详解
linux·运维·c语言