我如何告诉tar仅排除根目录之外的目录,而不是排除目录树中更深的同名目录?

资料夹结构:

etc (dir)
deploy (dir)
src (dir)
config (dir)
dist
 ├- config (dir) 
 ├- index.js

我想做的是打包除root config文件夹之外的所有内容,并将其放在中的tar中deploydist/config在输出中存在文件夹很重要开始于:

tar -czf deploy/deploy.gz   --exclude=deploy  --exclude="./config/"  ./*

$ l ./deploy/deploy0/dist 
index.js
router.js
test

但这导致丢失dist/config我唯一可以克服的方法dist/config是,如果我不尝试排除任何名为config的内容,请执行以下操作:

tar -czf deploy/deploy.gz   --exclude=deploy   ./*

$ l ./deploy/deploy1/dist 
config
index.js
router.js
test

OSX和CentOS(开发和构建)。焦油的男人让我认为这是不可能的。

我只是通过删除不需要的文件夹来解决此问题,因为这是在构建环境中,并且文件是一次性的。

费利克斯

您可以find用来创建参数-虽然有点长:

 find -mindepth 1 ! -wholename './config' ! -wholename './config/*'

mindepth 1排除.,以及wholename目录本身及其内容的两个专有名词。

tar -xzf deploy/deploy.gz --exclude="deploy" \
$( find -mindepth 1 ! -wholename './config' ! -wholename './config/*' )

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章