需要有关tar命令的帮助

时间:2015-10-19 16:30:31

标签: linux unix 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下运行命令。 它是较长脚本的一部分,但我不确定原作者的想法是什么。存档中包含'bundle'文件夹...并且它是那里唯一的第一级文件。

提前谢谢你:)

2 个答案:

答案 0 :(得分:0)

-s并不意味着要进行替换,这似乎是您尝试使用它的方式。您可能需要--xform='s/^bundle//'

-s在帮助列表中包含以下条目:

  

-s, - custom-order, - same-order
                              成员参数的列出顺序与
相同                               存档中的文件

使用您的代码,它实际上是在尝试查找名称为/^bundle//且不存在的文件,即使bundle也是如此。此外,我提供的--xform选项将重写文件名以从前面删除字符串bundle。如果您只是想提取文件bundle,则需要标记--exclude='bundle'

在这种情况下,如果bundle是归档中的顶级目录,并且它是唯一的目录,那么您也可以使用标记--strip-components=1,尽管这样可以摆脱所有顶级目录,所以可能不完全是您想要的,具体取决于您的存档

答案 1 :(得分:0)

全心全意,

问题解决了其他问题,然后是#tar;方式,但对于那些可能感兴趣的人来说,这是我在网上找到的答案:

如果您正在使用Linux或使用GNU tar进行开发,则此命令应该起作用:

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

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

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

是的,我的想法是从文件路径中删除/ bundle /文件夹。