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

相关推荐
雪落漂泊1 小时前
Linux进程(五):进程地址空间篇
linux·运维·服务器
AR-26710-2 小时前
Linux Day32——网络,ROCE-IB与以太网
linux·运维
LongRunning16 小时前
【Linux】RK3568-OpenCV+YOLO(八)
linux·opencv·yolo
子兮曰17 小时前
Chrome 权限元素实战:144 与 151 的渐进增强写法
前端·javascript·chrome
民乐团扒谱机19 小时前
【微实验】NSGA-II(非支配排序遗传算法)——解决多目标优化问题的“自然选择模拟器”
linux·人工智能·算法
물の韜20 小时前
ZYNQ/FMQL系列Linux之I2C开发实战
linux·arm开发·嵌入式硬件·设备树·iic·zynq
qq_3718021120 小时前
Ubuntu Linux中安装WorkBuddy
linux·运维·服务器·ubuntu
无足鸟ICT20 小时前
【RHCA+】iptraf-ng(网络监控分析)
linux·网络
独隅20 小时前
WebStorm 在 Linux 环境下的实战安装与高效开发指南
linux·ide·webstorm
坤坤子吖1 天前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习