test
|-a 空目录
|-b 空目录
|-c 有文件
|-d
我使用tar命令打包test目录 想过滤掉空目录a、b、d
我想到的是 tar -zcvf test.tar.gz --exclude=`find test -type d -empty` test
打包以后发现只是过滤掉了a目录而b、d目录并没有被过滤。那位大神帮我看看。
我猜 find 命令是发现a是空目录就返回结果,然后tar命令就开始打包,导致b、d没有被过滤
不知道这个猜想是否正确
如果单独执行 find test -type d -empty 就会列出a、b、d是空目录
各位大神帮忙看看,急用啊 googe很久了。
7 个解决方案
#1
》如果单独执行 find test -type d -empty 就会列出a、b、d是空目录
所以find没有问题。
是你用法不当,--exclude不接受find返回的那种结果。处理下再给exclude试试。
所以find没有问题。
是你用法不当,--exclude不接受find返回的那种结果。处理下再给exclude试试。
#2
高人能否指点1,2啊
#3
tar -zcvf test.tar.gz `find test -type d -empty | awk '{ printf("--exclude=%s ", $1) }'` test
#4
++++++
主要是因为楼主的--exclude=a b c是多个命令行参数了,需要分别使用--exclude才对。
#5
真是让我汗颜呐
#6
顶一个
#7
tar zcvf test.tar.gz `find test/* -type d -not -empty`
换个思路应该可以
换个思路应该可以
#1
》如果单独执行 find test -type d -empty 就会列出a、b、d是空目录
所以find没有问题。
是你用法不当,--exclude不接受find返回的那种结果。处理下再给exclude试试。
所以find没有问题。
是你用法不当,--exclude不接受find返回的那种结果。处理下再给exclude试试。
#2
》如果单独执行 find test -type d -empty 就会列出a、b、d是空目录
所以find没有问题。
是你用法不当,--exclude不接受find返回的那种结果。处理下再给exclude试试。
高人能否指点1,2啊
#3
tar -zcvf test.tar.gz `find test -type d -empty | awk '{ printf("--exclude=%s ", $1) }'` test
#4
tar -zcvf test.tar.gz `find test -type d -empty | awk '{ printf("--exclude=%s ", $1) }'` test
++++++
主要是因为楼主的--exclude=a b c是多个命令行参数了,需要分别使用--exclude才对。
#5
真是让我汗颜呐
#6
tar -zcvf test.tar.gz `find test -type d -empty | awk '{ printf("--exclude=%s ", $1) }'` test
++++++
主要是因为楼主的--exclude=a b c是多个命令行参数了,需要分别使用--exclude才对。
顶一个
#7
tar zcvf test.tar.gz `find test/* -type d -not -empty`
换个思路应该可以
换个思路应该可以