如何创建平tar归档
问题描述:
我tree
命令返回如何创建平tar归档
tmp
`-- t
`-- e
|-- 23.ps
`-- s
|-- adsf.ps
`-- t
`-- dupa.ps
我怎样才能创建tmp目录归档ps.tar.gz具有以下结构:
tmp
|-- ps.tar.gz
| |-- 23.ps
| |-- adsf.ps
| `-- dupa.ps
`-- t
`-- e
|-- 23.ps
`-- s
|-- adsf.ps
`-- t
`-- dupa.ps
?
答
outfile=$(pwd)/ps.tar;find . -type f | while read file; do
tar rf $outfile -C $(dirname $file) $(basename $file)
done
gzip $outfile
+1
不需要“cd”,使用tar的-C! – chris 2011-02-04 13:00:02
+0
好点chris,更新使用它! – cowsandmilk 2011-02-04 13:35:11
答
对于GNU tar,您可以使用--xform
参数。它需要一个sed
表达式并将其应用于每个文件名。因此,要删除最后一个/
的所有字符,您可以使用:
tar -c --xform s:^.*/:: your-files
mkdir archive;找到t/-name * .ps -exec ln {} archive/\; ; (cd archive && tar zcf ../ps.tar.gz * .ps); rm -rf archive – sastanin 2011-02-04 13:01:44