我想知道tar(1.15.1,Linux系统)在为它创建脚本之前是否已经有类似的内容。
我想创建一个包含特定dir.tar.gz
的给定dir/
的{{1}}。我希望命令能做两件具体的事情:
dir/myfile.gz
dir/myfile.gz
完成后,删除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
和--delete
选项的信息,但我不确定如何在一个命令中应用它们。有什么想法吗?
答案 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存档上操作(即使在运行中)并删除有问题的文件。