[英]How I can pack into tar-file only last directory from path?
如何僅將路徑中的最后一個目錄打包到 tar 文件中? 例如,我有幾條路徑
/usr/local/files/dir1/
file1.txt
file2.txt
file3.txt
/usr/local/files/dir2/
file3.txt
file4.txt
file5.txt
如果我運行命令:
tar czf my_arch.tar.gz -C /usr/local/files/dir1 .
我只獲得dir1目錄的包含,沒有它本身。
所以我有 - my_arch.tar.gz/file1.txt、file2.txt、file3.txt,但我需要在我的檔案中這樣的結構 -
my_arch.tar.gz/dir1/file1.txt, file2.txt, file3.txt
我怎么能做到這一點?
謝謝你。
嘗試
cd /usr/local/files
tar -cvzf my_arch.tar.gz dir1
-C 指令將使您更改為 dir1,因此不會存檔文件夾,而是存檔其內容:
-C, --directory DIR change to directory DIR
您不能直接通過 tar 執行此操作。 這是我的建議:
#!/bin/bash
mydir=/my_dir/whit/long_and/complicated_path/the_stuff_is_here
dirname=$(dirname $mydir )
basename=$(basename $mydir )
tar cvf /tmp/$basename.tar -C $dirname $basename
如果我理解您的要求是正確的,您希望您的 tar 文件包含該目錄。
在沒有 -C 標志的情況下嘗試,如下所示:
tar -czf my_arch.tar.gz /usr/local/files/dir1
$ tar vczf tmp/export/files.tar.gz -C tmp/export src
files.tar.gz 的結構
src
src/app
src/app/main.js
src/app/util
src/app/util/runtime.js
如果你指定-C
那么你的目錄路徑是./
。 可能會像您想要的那樣工作:
$ touch asdf/foo/bar/{1,2,3}
$ tree asdf/
asdf/
└── foo
└── bar
├── 1
├── 2
└── 3
2 directories, 3 files
$ tar -cv -C asdf/foo/bar/ -f asdf.tar ./
./
./3
./2
./1
$ tar tf asdf.tar
./
./3
./2
./1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.