Windows 下 7-Zip 对于 Pax Headers 的处理
简述
前几天(最近好忙啊)又遇到了 7-Zip 不能正确处理 tar
压缩文件后生成的 PaxHeaders.XXXXX
,将其直接解压出去的问题。一般情况下这个不太影响使用,只是这次因为有一个程序需要遍历整个目录,把 PaxHeaders.XXXXX
也当作一部分进行加载,导致程序报错无法使用。
解决方案
因为 7zFM.exe
肯定是不能直接用了,我的做法是用 7z.exe
的过滤参数。于是简化一下如下所示:
1 | $env:PATH+=';C:\Program Files\7-Zip\' |
第一行是暂时把 7-Zip 的路径添加到 PATH(PowerShell),第二行 -x
表示不包含,-r
表示递归,也就是所有的目录,!
表示统配(wildcard)。这样解压就不会把 PaxHeaders.XXXXX
解压出来了。
不过这只能解压 .tar
的文件,但是一般使用的情况下都是 .tar.xz
或者 .tar.gz
进行压缩后的,考虑过能不能像在 Linux 下一样用管道(pipe)直接二次解压。测试后发现 Windows 下的管道有问题,做不到这样子,只能先把 .tar
解压出来再用这个命令。没办法,凑合用吧。