centos extract有哪些高级用法
小樊
44
2025-12-09 16:26:27
CentOS 中的 extract 高级用法
概念澄清
- CentOS 并没有内置名为 extract 的标准命令。日常所说的“extract”通常指代 tar 的解压操作(如:tar -x),或是对 unzip 等工具的解压功能的泛称。因此,下面以 tar 为核心,结合 unzip,介绍在 CentOS 下更“高级”的解压技巧与组合用法。
tar 高级提取技巧
- 按模式批量提取与排除
- 使用通配符提取匹配文件:tar -xvzf archive.tar.gz --wildcards -C /dest ‘*.txt’
- 排除日志与临时目录:tar -xvzf archive.tar.gz --exclude=‘*.log’ --exclude=‘temp/’ -C /dest
- 仅包含指定路径:tar -xvzf archive.tar.gz --include=‘app/’ -C /dest
- 精确挑选成员与路径改写
- 从文件清单提取:tar -xvf archive.tar -C /dest --files-from=filelist.txt
- 去除前 N 级目录层级:tar -xvzf archive.tar.gz --strip-components=1 -C /dest
- 在解压时重命名/改写路径:tar -xzf archive.tar.gz --transform ‘s,^old/prefix/,new/prefix/,’ -C /dest
- 权限与所有权控制
- 不保留文件所有者/组/权限:tar -xvzf archive.tar.gz --no-same-owner --no-same-group --no-same-permissions -C /dest
- 使用数字 UID/GID:tar -xvzf archive.tar.gz --numeric-owner -C /dest
- 安全与幂等与进度
- 避免覆盖已有目录:tar -xvzf archive.tar.gz --no-overwrite-dir -C /dest
- 大包进度可视化:tar -xvzf archive.tar.gz --checkpoint=1000 --checkpoint-action=echo ‘Processed 1000 entries’
批量与自动化提取
- 从标准输入按清单提取:find /src -type f -name ".txt" | tar -xvf archive.tar -C /dest --files-from=-*
- 循环批量解压多个压缩包:for f in *.tar.gz; do tar -xvzf “$f” -C /dest; done
- 结合 xargs 并行处理(按 CPU 核数):ls *.tar.gz | xargs -n1 -P$(nproc) tar -xvzf -C /dest
- 仅解压归档中的部分成员:tar -xvf archive.tar -C /dest path/in/archive/file1 path/in/archive/dir2/
其他归档格式与补充
- ZIP 文件
- 查看内容:unzip -l archive.zip
- 解压到指定目录:unzip archive.zip -d /dest
- 按需解压部分文件:unzip archive.zip file1 dir2/ -d /dest
- RAR 文件(需安装 EPEL 后使用 unrar)
- 安装:sudo yum install -y unrar
- 解压:unrar x archive.rar /dest
- 常用组合速查
- 不解压查看:tar -tzvf archive.tar.gz
- 解压到目录:tar -xzvf archive.tar.gz -C /dest
- 解压并按模式筛选:tar -xvzf archive.tar.gz --wildcards -C /dest ‘*.log’