2011-02-04 59 views
10

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 

+0

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

回答

4
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

11

對於GNU tar,您可以使用--xform參數。它需要一個sed表達式並將其應用於每個文件名。因此,要刪除最後一個/的所有字符,您可以使用:

tar -c --xform s:^.*/:: your-files