2015-10-19 115 views
1

有麻烦了执行如下命令:需要帮助的tar命令

tar -xvf arch.tar.gz -s '/^bundle//' 

可能是

-s '/^bundle//' 

是一个问题,因为我有这样的错误:

$ tar -xvf arch.tar.gz -s '/^bundle//' 
tar: /^bundle: Not found in archive 
tar: Exiting with failure status due to previous errors 

试图在Cygwin/Win10下运行该命令。 它是更长的脚本的一部分,但我不确定原作者的想法是什么。存档确实包含了“包”文件夹......并且它是唯一的第一级文件。

预先感谢您:)

+0

哪个'tar'是那个? (请发布'tar --version'的答案) –

+0

-s标记是对要解压缩的文件进行排序以检查是否在存档中匹配,检查在程序逻辑中是否有意义(如果需要的话),否则您可以删除它并使用tar -xvf arch.tar.gz软件包 – narendra

+0

tar(GNU tar)1.28由Cygwin打包(1.28-1)版权所有(C)2014自由软件基金会,Inc. –

回答

0

-s并不意味着做替代,这似乎是你如何尝试使用它。你可能想--xform='s/^bundle//'

-s有帮助列表如下条目:

-s,--preserve阶,
成员参量在相同的顺序列出
--same阶 在存档

与您的代码文件它实际上是试图找到一个不存在的名字/^bundle//一个文件,即使bundle呢。另外,我给出的--xform选项将重写文件的名称,从正面剥离字符串bundle。如果你只是想不提取该文件bundle你想的标志--exclude='bundle'

在这种情况下,如果bundle是归档中的顶级目录,它是唯一一个,你也可以使用该标志--strip-components=1,尽管这会摆脱所有的顶级目录的,所以可能不是你想要什么取决于你的存档

+0

问题是,我不是给出的行的作者...它是按原样写的,但它不工作...我唯一的想法是,目标是提取文件夹结构,但没有第一个/捆绑/文件夹... –

+0

@PaulPaku我刚刚更新了我的答案,以说明如何做到这一点 –

+0

我认为这个想法是提取所有文件,但首先删除名为/ bundle /的顶级文件夹。所以/ bundle/1/*和/ bundle/2/*会被解压缩到/ 1/*和/ 2/*文件/文件夹中。 –

0

感谢所有,

问题解决等,那么“焦油”,的方式,但对于那些谁可能在这里感兴趣的是我在网上找到的答案:

如果你是在Linux上开发或使用的GNU tar,这个命令应该工作:

tar -xvf arch.tar.gz --transform 's|^bundle/||' 

对于基于BSD的Mac或操作系统:

tar -xvf arch.tar.gz -s '/^bundle//' 

是,当时的想法是,以去除/文件路径中的/ bundle /文件夹。

+0

如何在Windows 10中做到这一点。我没有找到bundle – aaviss