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

Ubuntu命令行压缩目录时如何排除指定子目录

在Ubuntu命令行压缩目录并排除子目录的解决方案

嘿,我来帮你搞定这个问题!在Ubuntu系统里,tar命令是处理目录压缩最常用的工具,只要用对参数,轻松就能排除不需要的子目录。下面给你详细讲用法和常见坑点:

一、基础命令格式

核心思路是用tar的--exclude参数指定要排除的子目录,基本格式如下:

tar -czvf 输出压缩包名.tar.gz 要压缩的目标目录 --exclude=需要排除的子目录路径

参数解释:

  • -c:创建新的压缩包
  • -z:用gzip格式压缩(生成.gz后缀的包)
  • -v:显示压缩过程的详细信息(可选,方便看进度)
  • -f:指定输出的压缩包文件名

二、实际例子演示

假设你要压缩/home/efren/my_workspace目录,需要排除里面的node_modules(依赖目录)和temp(临时文件目录)两个子目录,分两种情况:

1. 使用绝对路径

如果不确定当前工作目录,用绝对路径最稳妥,不会出错:

tar -czvf my_workspace.tar.gz /home/efren/my_workspace --exclude="/home/efren/my_workspace/node_modules" --exclude="/home/efren/my_workspace/temp"

2. 使用相对路径

如果你已经在/home/efren目录下(也就是目标目录的上级目录),可以用相对路径,更简洁:

tar -czvf my_workspace.tar.gz my_workspace --exclude="my_workspace/node_modules" --exclude="my_workspace/temp"

三、批量排除多个目录(适合排除列表长的情况)

如果要排除的子目录很多,重复写--exclude太麻烦,可以先创建一个排除列表文件:

  1. 新建exclude_list.txt,每行写一个要排除的路径:
my_workspace/node_modules
my_workspace/temp
my_workspace/logs
my_workspace/build
  1. 然后用--exclude-from参数指定这个文件:
tar -czvf my_workspace.tar.gz my_workspace --exclude-from=exclude_list.txt

四、常见坑点(之前命令无效可能是踩了这些)

  • 路径要准确:不能只写目录名(比如只写node_modules),否则tar会排除所有同名的目录,而且如果路径不匹配,排除会失效。一定要和目标目录的路径对应起来。
  • 参数顺序不能错:--exclude参数必须放在要压缩的目标目录后面,如果放在前面,命令会不生效。比如错误写法:tar -czvf my_workspace.tar.gz --exclude="node_modules" my_workspace,这种就不会正确排除。
  • 注意引号:如果排除的路径里有空格,一定要用引号包裹(比如--exclude="my workspace/temp files"),避免被解析成多个参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:04:18