这是我的文件结构。我目前居住在test2/
目录中,所有命令都必须从那里运行。
test/
|_test2/
publish/
|_subfolder1/
|_f1
|_f2
|_f3
|_subfolder2/
|_f4
|_f5
|_f6
|_f7
我需要执行以下操作
- 创建 subfolder2 的 tar.gz(同名)
- 删除子文件夹2
- 创建 subfolder1 的 tar.gz (名称相同),包括 subfolder2.tar.gz
- 删除子文件夹1
最后 tar 结构应该是这样的
publish/
|_subfolder1.tar.gz
|_subfolder2.tar.gz
当我解压缩当前路径中的每个 tar.gz 时,输出应如下所示:
publish/
|_subfolder1.tar.gz
|_subfolder1/
|_f1
|_f2
|_f3
|_subfolder2.tar.gz
|_subfolder2/
|_f4
|_f5
|_f6
|_f7
我可以通过执行以下操作来完成此操作:
cd ../../publish/subfolder1
tar -zxf subfolder2.tar.gz subfolder2/
rm -rf subfolder2
cd ../
tar -zxf subfolder1.tar.gz subfolder1/
rm -rf subfolder1
cd ../test/test2
我真的不希望我的脚本在带有cd
. 我尝试使用以下命令:
tar -zcf ../../publish/subfolder1/subfolder2.tar.gz -C ../../publish/subfolder1/subfolder2/ .
rm -rf ../../publish/subfolder1/subfolder2/
tar -zcf ../../publish/subfolder1.tar.gz -C ../../publish/subfolder1/ .
rm -rf ../../publish/subfolder1/
这将创建 tarball,但会删除目录。解压后,我看到以下内容:
publish/
|_subfolder1.tar.gz
|_subfolder2.tar.gz
|_f1
|_f2
|_f3
|_f4
|_f5
|_f6
|_f7
如何在不使用一堆 cd 命令的情况下将文件夹路径保留在 tarball 结构中?
要归档 的内容,
foo
请切换到foo
当前tar
目录:-C /some/dir/foo .
。要归档foo
目录本身,请更改为foo
的父目录和tar
foo
:-C /some/dir foo
。所以命令看起来像: