Answers:
GNU焦油依赖于胎儿炎,因此自然也有一些选择。
http://www.gnu.org/software/tar/manual/html_node/transform.html
如果你只是想删除一些路径段,然后--strip-components=n还是--strip=n会经常做的事:
 tar xvzf tgz --strip=1
但是也可以对要提取的文件进行正则表达式重写(标记是--transformor,--xform并使用/xmodifer 接受ereg ):
 tar xvzf tgz --xform='s#^[^/]+#.#x'
                 # or 's#^.+/##x' for discarding all paths
要列出tar,您需要其他--show-transformed选项:
 tar tvzf tgz --show-transformed --strip=1 --xform='s/abc/xyz/x'
我相信重写选项还可以用于打包,而不仅仅是提取。但是pax显然有更好的语法。
s#.*/##呢?
                    --strip在os x tar手册页中未提及,但是仍然可以运行,谢谢!
                    --strip和之间有什么区别--strip-components?
                    您可以分两步轻松完成此操作。根据需要进行调整:
$ mkdir /tmp/dirtree
$ tar xfz /path/to/archive -C /tmp/dirtree
$ find /tmp/dirtree -type f -exec mv -i {} . \;
$ rm -rf /tmp/dirtree
find -exec mv -i而不是find | xargs)。...我可以在任何系统上重复执行这些简单步骤,而无需携带脚本为我做。
                    tmpdir=$( mktemp -d )在创建临时目录时非常方便
                    可能不需要安装任何东西的解决方案。
tar tvf来从tarball抓取所有文件分别提取这些文件-将tar提取到stdout并重定向到$ filename
tar -tvf $1 | grep -v "^d" | \
              awk '{for(i=6;i<NF+1;i++) {printf "%s ",$i};print ""}' |\
              while read filename
              do
                 tar -O -xf $1 "$filename" > `basename "$filename"`
              done
保存为extract.sh并运行为extract.sh myfile.tar。它还会覆盖从压缩包中拉出的目录中遇到的所有重复文件名。