1

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

我想创建一个包含dir.tar.gz特定. 我希望该命令执行 2 项具体操作:dir/dir/myfile.gz

  1. 保存dir/myfile.gz
  2. dir/完成后删除所有其他内容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

我已经阅读了--deleteand--extract选项,但我不确定如何在一个命令中应用它们。有任何想法吗?

4

2 回答 2

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
于 2013-06-28T15:57:11.243 回答
1

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

于 2013-06-28T17:51:08.153 回答