+-
linux-使用-C选项和通配符的tar文件
我正在将tar命令传递给应用程序中的 Shell executor.但似乎我的tar语法不正确. (这是 Windows(bsdtar命令),但据我所知与 Linux相同;如果需要,我也可以在Linux上进行测试.)

我正在尝试将所有以ext结尾的文件的所有内容全部压缩为tar gz,而不将完整路径存储在我的tar文件中.

tar -cvzf test.tar.gz -C C:/mydir/toTar/ *.ext

我收到一个错误:

tar: *.ext: Cannot stat: No such file or directory

我可以给出整个路径,但是我的tar将包含C-> mydir-> toTar->.我只想要文件,而不想要mydir和toTar.

到目前为止,唯一接近我想要的东西是.而不是* .ext,但这也会使其他内容变得焦躁,这显然是我不想要的.

最佳答案
问题是*是由外壳扩展的通配符,但是您绕过外壳并直接调用tar. tar命令正在寻找一个文件名* .ext的文件,该文件不存在.

您的选择是:

>用您自己的代码扩展文件列表,然后将该列表传递给tar.
>通过调用/ bin / sh -c tar之类的代码从代码中调用Shell …

对于选项2,可能会涉及安全性-如果Shell看到它认为是命令的内容,它将运行它.因此,选项1更安全,但这取决于您,这更有意义.

点击查看更多相关文章

转载注明原文:linux-使用-C选项和通配符的tar文件 - 乐贴网