创建目录的tar.gz并清理除文件以外的目录?

时间:2013-06-28 15:49:52

标签: linux bash unix tar

我想知道tar(1.15.1,Linux系统)在为它创建脚本之前是否已经有类似的内容。

我想创建一个包含特定dir.tar.gz的给定dir/的{​​{1}}。我希望命令能做两件具体的事情:

  1. 保留dir/myfile.gz
  2. dir/myfile.gz完成后,删除dir/中的所有其他内容。
  3. 例如:

    dir.tar.gz

    我希望tree -if . . ./dir ./dir/dir2 ./dir/dir2/file3 ./dir/file1 ./dir/file2 ./dir/myfile.gz 2 directories, 4 files 命令的结果为:

    tar

    我已阅读有关tree -if . ./dir ./dir/myfile.gz ./dir.tar.gz 1 directory, 2 files --delete选项的信息,但我不确定如何在一个命令中应用它们。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这应该有效:

tar -zcvf dir.tar.gz --exclude="*.gz" ./dir/. && find ./dir/. ! -name "*.gz" -exec rm -rf {} +

测试:

$ tree -if .
.
./dir
./dir/dir2
./dir/dir2/file3
./dir/file1
./dir/file2
./dir/myfile.gz

2 directories, 4 files

$ tar -zcvf dir.tar.gz --exclude="*.gz" ./dir/. && find ./dir/. ! -name "*.gz" -exec rm -rf {} +
./dir/./
./dir/./file1
./dir/./dir2/
./dir/./dir2/file3
./dir/./file2
rm: cannot remove `.' or `..'

$ tree -if .
.
./dir
./dir/myfile.gz
./dir.tar.gz

1 directory, 2 files

答案 1 :(得分:1)

您可能也对tardy感兴趣,这是一个tar后处理器(过滤器),因此您可以在tar存档上操作(即使在运行中)并删除有问题的文件。