将tar文件放在子目录中


8

我有如下目录设置:

folder_x
file.y
file.z

我想创建一个tar文件,以便在提取该文件时,其结构如下所示:

dir_q/folder_x
dir_q/file.y
dir_q/file.z

如何使用来使它工作tar?供参考,我正在使用的当前命令是:

tar -czf archive.tar.gz file.y file.z folder_x

Answers:


9

我从未使用过--transform选项,但是我收集到它可以满足您的需求:

tar -czf archive.tar.gz --transform 's,^,dir_q/,' file.y file.z folder_x

实现使用,代替而不是/作为分隔符,因此我们可以添加一个斜杠。


嗯,它似乎没有正确执行:file.z-> dirfile.zdirfolder_x。我也将与正则表达式一起玩,看看是否可以按照我想要的方式获得它。

1
我是这样做的:tar -czf archive.tar.gz --transform's,^,dir_q /,file.y file.z folder_x Sed允许/而不是/,避免表达式中存在正斜杠时的歧义。 。通常,我会说您可以使用反斜杠转义斜杠,但sed(至少是gnu sed)不能正确解释它。
jdb

tar --transform在MacOS上似乎不起作用
Alexander Mills

在MacOS中,您可以安装macports和gnutar以获得--transform选项。或自行下载并编译Gnutar。
Marnix A. van Ammers

1

如果您不介意创建新目录...

mkdir dir_q; tar -C $ _ -xzvf archive.tar.gz

或者,创建一个新目录,将文件解压缩到该目录,然后从父目录重新解压缩,以在提取的版本中包含其名称。这样,您就不必记住一些超长调用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.