建立不包含父目錄的 tar 檔案

建立不包含父目錄的 tar 檔案

我正在嘗試為我的腳本創建一個圖形程式。

在腳本中,我使用 tar 建立 tar 檔案。

從圖形程式中,我獲得了要建立 tar 存檔的檔案的全名。

tar -cvf temp.tar /home/username/dir1/dir2/selecteddir 

我的 tar 檔案包括 home、使用者名稱、dir1、dir2 和 selecteddir,而我希望 tar 創建只包括 selecteddir 的檔案。

答案1

您可以使用-C選項tar來完成此操作:

tar -C /home/username/dir1/dir2 -cvf temp.tar selecteddir

從手冊頁tar

-C directory
         In c and r mode, this changes the directory before adding the following files.  
         In x mode, change directories after opening the archive but before extracting 
         entries from the archive.

答案2

您可以使用兩種方法來解決此問題。

我認為第一個更容易。只需cd進入要壓縮的目錄的正上方即可。在這種情況下,它會是dir2

$ cd /home/username/dir1/dir2/
$ tar -cvf temp.tar selecteddir

第二種方法是使用--transform採用sed表達式並針對檔案名稱運行它的選項。注意:您必須在表達式/中轉義sed

$ tar -cvf temp.tar /home/username/dir1/dir2/selecteddir --transform='s/\/home\/username\/dir1\/dir2\///g'

答案3

首先,進入工作目錄,

cd /your/working/directory/ 

然後使用魔法*:-)

tar -cvf temp.tar *

答案4

為了避免出現點目錄,您可以在事後刪除:

tar czC /path/to/dir . --transform='s,^\./,,' >| foo.tgz

這將建立一個僅包含以下內容的存檔內容/path/to/dir

相關內容