在 CentOS 下,“extract(解压/提取)”批量处理通常指对目录下大量压缩包批量解压。下面按常见场景给你几种实用方法。
.tar.gzfor f in *.tar.gz; do
tar -xzf "$f"
done
.tar.xzfor f in *.tar.xz; do
tar -xJf "$f"
done
.zipfor f in *.zip; do
unzip "$f"
done
.tgzfor f in *.tgz; do
tar -xzf "$f"
done
如果压缩包格式不统一,可以用 file 判断:
for f in *; do
case "$(file -b --mime-type "$f")" in
application/gzip)
tar -xzf "$f" ;;
application/x-xz)
tar -xJf "$f" ;;
application/zip)
unzip "$f" ;;
esac
done
for f in *.tar.gz; do
d="${f%.tar.gz}"
mkdir -p "$d"
tar -xzf "$f" -C "$d"
done
find 递归批量解压适合子目录中也有压缩包的情况:
find . -name "*.tar.gz" -exec tar -xzf {} \;
或解压到各自目录:
find . -name "*.zip" | while read f; do
d="${f%.zip}"
mkdir -p "$d"
unzip "$f" -d "$d"
done
ls *.tar.gz | xargs -P 4 -I {} tar -xzf {}
-P 4 表示 4 个并行任务。
which tar unzip xz
缺失可安装:
yum install -y unzip xz
如果你指的是 “extract 命令/工具”、日志提取、数据库导出,或某种特定软件里的 extract,可以告诉我具体场景,我给你更精确的方案。