给定文件数组创建一个 .tar.bz2 文件
Create a .tar.bz2 file given an array of files
在 Bash
脚本中,我有一个包含文件列表的数组(以完整文件路径的形式):
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 cfvj files.tar.bz2 "${individual_files[@]}"
v
应该为您提供有关如何创建 bz2 文件的详细信息。
在 Bash
脚本中,我有一个包含文件列表的数组(以完整文件路径的形式):
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 cfvj files.tar.bz2 "${individual_files[@]}"
v
应该为您提供有关如何创建 bz2 文件的详细信息。