使用find排除目录并对目录中的其他所有内容进行tar

时间:2014-10-09 03:22:57

标签: linux bash find gnu-coreutils

我在目录中有以下内容:

DIR1
DIR2
文件1
file2

除了dir1

之外,我想把所有东西都搞砸了

当我这样做时:

find . -path '*dir1*' -prune -o -print

我没有在输出中看到dir1(如预期的那样)

但是当我这样做时:

find . -path '*dir1*' -prune -o -exec tar -czvf documents.tgz  '{}' \+

我看到dir1也在documents.tgz中被玷污了。为什么?

2 个答案:

答案 0 :(得分:2)

如果使用"发现"不是强制性要求,假设" main_dir"作为父目录名。

tar --exclude=main_dir/dir1 -cvzf tarred_file.gz main_dir/

答案 1 :(得分:1)

我的猜测是当前目录('。')作为参数传递给tar(尽管我收到警告,可能你错过了吗?)。

这对我有用:

find . -path './dir1*' -prune -o -path './*' -exec tar -czvf documents.tar {} \+