在 Debian 环境下,“extract 任务”通常指从压缩包 / 归档文件中自动解压(如 .deb、.tar.gz、.zip 等),也可能指从 Debian 软件包或系统中提取文件/信息。下面按常见场景给你几种自动化方案。
atool(推荐,自动识别格式)sudo apt install atool
# 自动解压
aunpack file.tar.gz
aunpack file.zip
批量自动解压:
for f in *.tar.gz; do
aunpack "$f"
done
unar(支持格式极多)sudo apt install unar
unar *.zip
unar file.rar
bash + 文件类型判断(无依赖)for f in *; do
case "$f" in
*.tar.gz) tar -xzf "$f" ;;
*.tar.xz) tar -xJf "$f" ;;
*.zip) unzip "$f" ;;
*.deb) dpkg-deb -x "$f" ./ ;;
esac
done
.deb 包(Debian 特化)dpkg-debdpkg-deb -x package.deb ./extract_dir
dpkg-deb -e package.deb ./control
mkdir -p extracted
for deb in *.deb; do
dpkg-deb -x "$deb" "extracted/${deb%.deb}"
done
crontab -e
*/10 * * * * find /data/incoming -name '*.tar.gz' -mmin -10 -exec tar -xzf {} -C /data/out \;
sudo apt install inotify-tools
watch 脚本:
inotifywait -m /data/incoming -e close_write |
while read dir action file; do
case "$file" in
*.tar.gz) tar -xzf "$dir$file" -C /data/out ;;
esac
done
RUN apt update && apt install -y unar
COPY *.zip /tmp/
RUN unar /tmp/*.zip -o /app
如:
可以告诉我具体目标,例如:
“自动提取所有已安装 deb 包列表并导出”
我可以给你精确脚本。
| 场景 | 推荐 |
|---|---|
| 通用解压 | atool / unar |
| deb 包 | dpkg-deb |
| 批量 | bash 循环 |
| 实时 | inotify |
| 定时 | cron |
如果你能说明 “extract 的是什么、从哪里来、到哪里去”,我可以直接给你可复制的完整自动化脚本。