2016-01-12 70 views
0

數組在Bash腳本文件.tar.bz2格式,我有一個包含文件的列表(在其完整的文件路徑的形式)的數組:創建指定文件

declare -a individual_files=("/path/to/a" "/path/to/b" "/path/to/c") 

我想使用tar命令在tar.bz2中創建包含陣列中所有文件的壓縮文件。

到目前爲止,我已經嘗試

tar rf files.tar "${individual_files[@]}" 
tar cjf files.tar.bz2 files.tar 

但由於某些原因,files.tar.bz2總是隻包含數組中的最後一個文件。

這樣做的正確命令是什麼,最好是不創建中間文件.tar

更新:使用@ PanRuochen的答案,這是我的詳細信息,請參閱:

+ tar cfvj /Users/skyork/test.tar.bz2 /Users/skyork/.emacs /Users/skyork/.Rprofile /Users/skyork/.aspell.en.pws /Users/skyork/.bash_profile /Users/skyork/.vimrc /Users/skyork/com.googlecode.iterm2.plist 
tar: Removing leading '/' from member names 
a Users/skyork/.emacs 
a Users/skyork/.Rprofile 
a Users/skyork/.aspell.en.pws 
a Users/skyork/.bash_profile 
a Users/skyork/.vimrc 
a Users/skyork/com.googlecode.iterm2.plist 

但儘管如此,所得到的test.tar.bz2文件只有在它的陣列(/Users/skyork/com.googlecode.iterm2.plist)的最後一個文件。

我的不好,文件確實存在但隱藏。

+0

在'tar rf'命令之前加'set -x'並將'v'標誌添加到'rf'命令並查看輸出結果如何? –

+1

你爲什麼認爲tar文件不正確?檔案中的所有文件*除.plist文件外都是隱藏的,所以如果你解壓縮檔案然後執行'ls',你就不會看到它們。你需要'ls -a'來查看隱藏的文件。 (隱藏文件的名字以'.'開頭,可能你的Mac查找器也會隱藏它們。)除此之外,@PanRouchen的回答是正確的,但我個人忽略了'v',因爲它只是污染了stdout 。 (對於驗證事情正在工作很有用,我猜。) – rici

+2

您的tar包含所有文件。只是以'.'開頭的文件是隱藏的。 –

回答

1
tar cfvj files.tar.bz2 "${individual_files[@]}" 

v應該爲您提供有關如何創建bz2文件的詳細信息。

相關問題