![用焦油包装](https://linux22.com/image/4460/%E7%94%A8%E7%84%A6%E6%B2%B9%E5%8C%85%E8%A3%85.png)
我正在尝试打包文件:
file1
folder2/hello
folder2/world
file3
到 tar 文件中,以便将它们封装在自定义文件夹中,因此tar -tvf archive.tar
显示为:
mycustomfolder/file1
mycustomfolder/folder2/hello
mycustomfolder/folder2/world
mycustomfolder/file3
目前为了解决这个问题,我是:
file1
创建、folder2
和的存档(x)file3
。- 创建
mycustomfolder
文件夹。 - 将存档(x)提取到
mycustomfolder
- 创建一个档案(y)
mycustomfolder
我忍不住想他们可能是这样做的一步或者更好的方法?
答案1
如果您希望存档提取到自己的目录中(这通常更好,因为不这样做的目录可能会造成混乱),只需创建目录,然后将内容树移动/复制到其中,这样您就可以了,如下所示在你的第二个例子中:
mycustomfolder/file1
mycustomfolder/folder2/hello
mycustomfolder/folder2/world
mycustomfolder/file3
然后tar -cvf myarchive.tar mycustomfolder
。提取,tar -xvf myarchive.tar
。
如果您不想先创建目录,您可以转换文件名并附加目录前缀:
tar --xform="s%^%mycustomfolder/%" -cvf myarchive.tar file1 folder2 file3
转换(请参阅man tar
)使用sed
语法;我使用%
而不是/
分隔符,因为s/^/mycustomerfolder\//
创建了一个名为mycustomfolder\
(==奇怪行为IMO)的文件夹,但s/^/mycustomfolder//
(正确地)是“无效的转换表达式”。