linux下面tar打包, 排除某个特定的目录( 只对一个目录操作, 不对其他目录操作)

比如 temp 下面有 aa bb cc dd四个文件夹, 然后bb下面有dd命名的文件, cc下面有dd命名的文件夹
我只想打包temp 下的aa bb cc 排除dd 我这样操作
①tar zcf temp.tar.gz * --exclude dd ②tar zcf temp.tar.gz * --exclude=dd③tar zcf temp.tar.gz * --exclude=dd 都不能达到我要的效果
这样有把temp下面的dd文件排除了 , 但是同时也把bb下面的以dd命名文件 还有cc下面的以dd命名的文件夹也排除了.

我只要排除temp根目录下面的dd文件夹及其子目录, 要保留bb下面同名的dd文件 还有cc下面的同名的dd文件夹, 请问正确的语法该怎么写, 可以只对一个目录操作, 不对其他目录操作.

第1个回答  2014-04-05
[boomer@www test]$ pwd
/home/boomer/tmp/test
[boomer@www test]$ ls -R
.:
aa  bb  cc  dd

./aa:
1.txct  1.txt

./bb:
2.txt  dd

./bb/dd:
5.tx  5.txt

./cc:
3.txt  dd

./cc/dd:
4.txt

./dd:
6.txt
[boomer@www test]$ cat > include.mydirs <<EOF
> aa
> bb
> cc
> EOF
[boomer@www test]$ tar cvzf temp.tar.gz `cat include.mydirs`
aa/
aa/1.txct
aa/1.txt
bb/
bb/dd/
bb/dd/5.tx
bb/dd/5.txt
bb/2.txt
cc/
cc/dd/
cc/dd/4.txt
cc/3.txt
[boomer@www test]$

第2个回答  2020-04-26
仅排除temp下的dd,下面这么写只会排除temp下面的dd文件夹和dd文件(bb下的dd不受影响)
tar -zcvf temp.tar.gz --exclude=temp/dd temp

排除temp下所有dd,,下面这么写会排除temp下面的所有dd文件夹(及dd里的文件)和所有dd文件(bb下的dd受影响,被排除)
tar -zcvf temp.tar.gz --exclude=dd temp
第3个回答  2014-04-05
tar -zcf tmp.tgz $(ls | grep -v dd)

本回答被提问者采纳
第4个回答  2014-04-05
这个去求是正常的, 也是可以实现的, 当然需要看看是想怎么用啊 。
死心了?
相似回答