+-

我正在将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文件 - 乐贴网