温馨提示×

centos extract怎么批量提取

小樊
57
2026-09-27 05:41:56
栏目: 智能运维

在 CentOS 下“批量提取”通常是指批量解压各种压缩包(tar.gz / zip / rar / 7z 等)。下面按常见场景给你一套实用方法。


一、批量解压 tar / tar.gz / tar.bz2 / tar.xz

1️⃣ 当前目录下全部解压

for f in *.tar*; do
  tar -xf "$f"
done

2️⃣ 解压到各自独立目录(推荐)

for f in *.tar*; do
  d="${f%.*}"
  mkdir -p "$d"
  tar -xf "$f" -C "$d"
done

二、批量解压 zip

安装 unzip(如未安装)

yum install -y unzip

批量解压

for z in *.zip; do
  unzip "$z" -d "${z%.zip}"
done

三、批量解压 rar

安装 unrar

yum install -y epel-release
yum install -y unrar

批量解压

for r in *.rar; do
  unrar x "$r" "${r%.rar}/"
done

四、批量解压 7z

安装 p7zip

yum install -y p7zip

批量解压

for s in *.7z; do
  7z x "$s" -o"${s%.7z}"
done

五、混合格式(tar/zip/rar/7z 都有)

for f in *; do
  case "$f" in
    *.tar*|*.tgz) tar -xf "$f" -C "${f%.tar*}" ;;
    *.zip) unzip "$f" -d "${f%.zip}" ;;
    *.rar) unrar x "$f" "${f%.rar}/" ;;
    *.7z) 7z x "$f" -o"${f%.7z}" ;;
  esac
done

六、递归批量解压(子目录里也有压缩包)

find . -type f \( -name "*.tar*" -o -name "*.zip" -o -name "*.rar" -o -name "*.7z" \) -exec sh -c '
  f="$1"
  d="${f%.*}"
  mkdir -p "$d"
  case "$f" in
    *.tar*) tar -xf "$f" -C "$d" ;;
    *.zip) unzip "$f" -d "$d" ;;
    *.rar) unrar x "$f" "$d/" ;;
    *.7z) 7z x "$f" -o"$d" ;;
  esac
' _ {} \;

七、常见坑提醒

  • 文件名有空格 → 一定要用 "$f"
  • 解压乱码(zip 中文) → unzip -O GBK file.zip
  • 权限问题 → 加 sudo

如果你说的 “extract”不是解压,而是:

  • 从日志提取内容
  • 从文件提取字段
  • 用 awk / sed / grep 批量提取

告诉我具体场景,我可以直接给你命令。

0 踩