Linux
從不同的目錄創建一個 tar.gz 文件,tar 必須將文件保存在特定的目錄結構中
這是我的文件結構。我目前居住在
test2/
目錄中,所有命令都必須從那裡執行。test/ |_test2/ publish/ |_subfolder1/ |_f1 |_f2 |_f3 |_subfolder2/ |_f4 |_f5 |_f6 |_f7
我需要執行以下操作
- 創建 subfolder2 的 tar.gz(同名)
- 刪除子文件夾2
- 創建 subfolder1 的 tar.gz (名稱相同),包括 subfolder2.tar.gz
- 刪除子文件夾1
最後 tar 結構應該是這樣的
publish/ |_subfolder1.tar.gz |_subfolder2.tar.gz
當我解壓縮目前路徑中的每個 tar.gz 時,輸出應如下所示:
publish/ |_subfolder1.tar.gz |_subfolder1/ |_f1 |_f2 |_f3 |_subfolder2.tar.gz |_subfolder2/ |_f4 |_f5 |_f6 |_f7
我可以通過執行以下操作來完成此操作:
cd ../../publish/subfolder1 tar -zxf subfolder2.tar.gz subfolder2/ rm -rf subfolder2 cd ../ tar -zxf subfolder1.tar.gz subfolder1/ rm -rf subfolder1 cd ../test/test2
我真的不希望我的腳本在帶有
cd
. 我嘗試使用以下命令:tar -zcf ../../publish/subfolder1/subfolder2.tar.gz -C ../../publish/subfolder1/subfolder2/ . rm -rf ../../publish/subfolder1/subfolder2/ tar -zcf ../../publish/subfolder1.tar.gz -C ../../publish/subfolder1/ . rm -rf ../../publish/subfolder1/
這將創建 tarball,但會刪除目錄。解壓後,我看到以下內容:
publish/ |_subfolder1.tar.gz |_subfolder2.tar.gz |_f1 |_f2 |_f3 |_f4 |_f5 |_f6 |_f7
如何在不使用一堆 cd 命令的情況下將文件夾路徑保留在 tarball 結構中?
要歸檔 的內容,
foo
請切換到foo
目前tar
目錄:-C /some/dir/foo .
。要歸檔foo
目錄本身,請更改為foo
的父目錄和tar
foo
:-C /some/dir foo
。所以命令看起來像:
tar -zcf ../../publish/subfolder1/subfolder2.tar.gz -C ../../publish/subfolder1 subfolder2 rm -rf ../../publish/subfolder1/subfolder2/ tar -zcf ../../publish/subfolder1.tar.gz -C ../../publish subfolder1 rm -rf ../../publish/subfolder1/