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

Windows下tar命令仅排除当前目录指定文件夹、保留子目录同名文件夹的实现方法咨询

Windows下tar命令仅排除当前目录指定文件夹、保留子目录同名文件夹的实现方法咨询

嗨,我来帮你解决这个问题!你遇到的情况是因为Windows环境下的tar对--exclude参数的路径匹配逻辑和类Unix系统略有差异,直接用--exclude "./two"会匹配所有路径中包含./two的条目,包括子目录里的./one/two,所以才会把它们一并排除。

要精准只排除当前目录下的two文件夹,同时保留子目录里的同名文件夹,你可以试试以下两种方法:

方法1:使用正则锚点精确匹配

利用正则表达式的开头和结尾锚点,限定只匹配当前目录下的two目录,命令如下:

tar --exclude "^./two$" -c -f ../test.tar .

这里的^代表路径起始位置,$代表路径结束位置,^./two$会严格匹配当前目录下的two目录,不会对./one/two这类子目录生效。

方法2:通过目录后缀区分匹配

你也可以给路径加上目录结尾的斜杠,明确指定要排除的是当前目录下的two目录本身,同时兼顾Windows的路径分隔符特性,命令如下:

tar --exclude "./two/" --exclude ".\two\" -c -f ../test.tar .

这种写法会精准匹配当前目录下的two目录,不会牵连到子目录里的同名文件夹。

执行完上面的命令后,你再用tar -t -f ../test.tar查看打包内容,应该就能看到结果符合预期:保留./one/、./one/two/以及里面的文件,只排除当前目录下的./two/和它的内容。

备注:内容来源于stack exchange,提问作者triatic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 06:44:38