在写一个shell脚本时遇到了原有打包的tar文件目录层次太深代码不好处理的问题 。处理代码已经写好了,需要将tar文档解压为不带原始目录。

1、tar命令

tar -xvf file.tar解压出来是带原始路径。

2、pax命令

man pax 查阅资料,看到有如下提示:

 This sequence of commands will copy the entire olddir directory hierarchy to newdir.

 $ pax -r -s ’,^//*usr//*,,’ -f a.pax

上面英文意思是可以用新目录替代原有目录。

改成pax如下:

pax -r -pe -s ":.*/:./20130105/:" -f 20130104.tar  

--将tar压缩包里的文件解压到./20130105/目录下,不输出绝对路径

--pe带tar压缩时的用户属性

rm -rf 20130105/20130104