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
)的最後一個文件。
我的不好,文件確實存在但隱藏。
在'tar rf'命令之前加'set -x'並將'v'標誌添加到'rf'命令並查看輸出結果如何? –
你爲什麼認爲tar文件不正確?檔案中的所有文件*除.plist文件外都是隱藏的,所以如果你解壓縮檔案然後執行'ls',你就不會看到它們。你需要'ls -a'來查看隱藏的文件。 (隱藏文件的名字以'.'開頭,可能你的Mac查找器也會隱藏它們。)除此之外,@PanRouchen的回答是正確的,但我個人忽略了'v',因爲它只是污染了stdout 。 (對於驗證事情正在工作很有用,我猜。) – rici
您的tar包含所有文件。只是以'.'開頭的文件是隱藏的。 –