我有一個名爲dir
與文件file1
file2
file3
在裏面,我想創建一個gzip壓縮的tar目錄從它叫做dir.tar.gz
但與層次結構目錄:焦油創建重命名目錄
anotherdir/file1
anotherdir/file2
anotherdir/file3
總是有選擇編寫一個shell腳本,將dir
重命名爲anotherdir
,然後打開它,但我希望有一個更優雅的解決方案。
我有一個名爲dir
與文件file1
file2
file3
在裏面,我想創建一個gzip壓縮的tar目錄從它叫做dir.tar.gz
但與層次結構目錄:焦油創建重命名目錄
anotherdir/file1
anotherdir/file2
anotherdir/file3
總是有選擇編寫一個shell腳本,將dir
重命名爲anotherdir
,然後打開它,但我希望有一個更優雅的解決方案。
在tarring過程中使用符號鏈接和取消引用。
$ mkdir dir && touch dir/file{1,2,3} && ln -sf dir anotherdir
$ tar -hcvpf a.tar anotherdir
anotherdir/
anotherdir/file1
anotherdir/file2
anotherdir/file3
$ tar -tf a.tar
anotherdir/
anotherdir/file1
anotherdir/file2
anotherdir/file3
你可以做一個符號鏈接,然後強制tar
遵循它:
ln -s dir anotherdir
tar -czf dir.tar.gz -L anotherdir
小心將也遵循樹內的任何符號鏈接。
以下似乎工作正常。焦油不會跟隨鏈接,但結果焦油將有額外的./爲文件(我認爲這不是一個大問題)。
mkdir dir another_dir && touch dir/file{1,2,3} another_dir/another_file{1,2,3}
tmp_dir=`mktemp -d /tmp/dXXXX` && ln -s `pwd`/dir $tmp_dir/another_dir &&
tar -C $tmp_dir -cvf result.tar another_dir/. &&
rm $tmp_dir/another_dir && rmdir $tmp_dir
問題是我的設置不典型,目錄anotherdir已經存在。沒有其他辦法嗎? – kaykun 2011-03-05 20:23:48
'anotherdir'可以在任何目錄下。首先cd到/ tmp,然後創建符號鏈接。 – kojiro 2011-03-05 20:25:41