You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在bash中删除tar.gz压缩包内的空.yang文件

解决方案

你原脚本的问题在于仅解压了gzip层得到tar文件,没有将tar包内的实际文件提取到文件系统,所以find命令只会扫描当前工作目录的文件,无法触及压缩包内的.yang文件,自然不会生效。

可行实现脚本

#!/bin/bash
for f in *.tar.gz; do
    echo "Processing file $f"
    # 生成随机临时目录,避免文件名冲突
    tmp_dir=$(mktemp -d)
    # 完整解压tar.gz到临时目录
    tar -xzf "$f" -C "$tmp_dir"
    # 仅删除空的.yang格式文件,不会误删其他类型文件
    find "$tmp_dir" -type f -name "*.yang" -size 0 -print -delete
    # 重新打包为tar.gz覆盖原文件,保留原目录结构
    tar -czf "$f" -C "$tmp_dir" .
    # 清理临时目录
    rm -rf "$tmp_dir"
    echo "******************************************"
done

注意事项

执行脚本前请先备份原始tar.gz文件,避免操作失误导致数据丢失
如果需要保留压缩包内文件的权限、软链接等属性,可在tar解压和打包命令中添加-p参数
脚本逻辑默认保留原压缩包内的文件路径结构,不会修改非空文件的内容和存储路径

内容的提问来源于stack exchange,提问作者least Risk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:15:03