linux批量解压

最近给实验室服务器上解压TSMC工艺库,学习到一种批量解压的方法,非常好用,记录如下:

可以看到路径下有这么多压缩包,分别对应了不同的模型,需要解压到同一个上级路径中

 命令如下:

ls *.tar.gz | xargs -n1 -I {} tar xzvf {} -C ..

命令其实不复杂,解释如下:

ls *.tar.gz         列出所有的压缩包

xargs -n1        一次只使用一个argument

-I {}                 用符号{}代表上面的argument

tar xzvf {}        解压缩每一个压缩包

-C ..                输出路径,这里是父路径

Linux 系统中,批量解压多个 ZIP 文件可以通过多种方法实现,以下是几种常见且实用的方式: ### 1. 使用 Shell 命令批量解压所有 ZIP 文件到当前目录 可以使用 `for` 循环结合 `unzip` 命令将当前目录下的所有 `.zip` 文件解压到当前目录: ```bash for i in `find . -name "*.zip" -type f`; do unzip $i -d ./ ; done ``` 该命令通过 `find` 查找当前目录及其子目录中的所有 `.zip` 文件,并依次解压到当前目录[^1]。 ### 2. 每个 ZIP 文件解压到以其文件名命名的子目录中 如果希望每个 ZIP 文件解压到以其文件名命名的子目录中,可以使用以下命令: ```bash for i in `find . -name "*.zip" -type f`; do mkdir ${i//.zip} ; unzip $i -d ./${i//.zip} ; done ``` 该命令会为每个 ZIP 文件创建一个与之同名的目录,并将文件解压到对应目录中[^1]。 ### 3. 忽略原有目录结构,统一解压到当前目录 如果希望忽略 ZIP 文件中的目录结构,将所有内容直接解压到当前目录,可以使用 `-j` 参数: ```bash for i in `find . -name "*.zip" -type f`; do unzip -j $i -d ./ ; done ``` 该参数会忽略 ZIP 文件中的目录结构,将所有文件直接解压到当前目录下[^1]。 ### 4. 使用 `xargs` 解压特定命名规则的 ZIP 文件 如果只需要解压符合特定命名规则的 ZIP 文件(如 `ab*.zip`),可以结合 `ls` 和 `xargs` 使用: ```bash $ ls ab*.zip | xargs -n1 unzip -o ``` 其中 `-n1` 表示每次传递一个参数给 `unzip` 命令,`-o` 表示以覆盖方式解压文件[^3]。 ### 5. 使用 Python 脚本解压 ZIP 文件到指定目录 如果希望使用 Python 脚本实现批量解压功能,可以参考以下代码: ```python import os import sys rdir = sys.argv[1] assert os.path.exists(rdir) if rdir[-1] == '/': rdir = rdir[:-1] exts = ['.zip',] dirlist = os.listdir(rdir+'/') for di in dirlist: if os.path.isfile(di): for ext in exts: if di[-len(ext):].lower() == ext: print(di) # 创建与 ZIP 文件同名的目录 if not os.path.exists(rdir+'/'+di[:-len(ext)]): os.mkdir(rdir+'/'+di[:-len(ext)]) # 执行解压命令 os.system('unzip "%s/%s" -d "%s/%s"' % (rdir, di, rdir, di[:-len(ext)])) break ``` 该脚本接受一个目录路径作为参数,遍历该目录下的所有 ZIP 文件,并将每个 ZIP 文件解压到以其文件名命名的子目录中[^5]。 ### 6. 从文件列表中读取 ZIP 文件并后台解压 如果 ZIP 文件列表存储在一个文本文件中(如 `filelist.txt`),可以使用以下脚本逐行读取并后台解压: ```bash #!/bin/bash while read -r line do unzip -n "$line" -d extracted >> unzip.log 2>&1 & done < filelist.txt ``` 此脚本会将每个 ZIP 文件的解压操作放在后台运行,并将输出和错误信息记录到 `unzip.log` 文件中[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值