
我正在嘗試為我的腳本創建一個圖形程式。
在腳本中,我使用 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
。