将文件从一个拉链复制到另一个?

用户名

我有一个名为 'sourceZip.zip'

该文件('sourceZip.zip')包含两个文件:

'textFile.txt'

'binFile.bin'


我也有一个名为 'targetZip.zip'

该文件('targetZip.zip')包含一个文件:

'jpgFile.jpg'


在Linux中,我将用什么bash命令这两个文件(复制'textFile.txt''binFile.bin')从源存档('sourceZip.zip')直入第二个存档('targetZip.zip'),这样在过程结束时,第二个存档('targetZip.zip')将包含所有三个文件?

(理想情况下,这将使用“ zip”或“ unzip”在一个命令中完成)

吉勒斯“别再邪恶了”

使用普通的命令行zip工具,我认为您不能避免使用单独的提取和更新命令。

source_zip=$PWD/sourceZip.zip
target_zip=$PWD/targetZip.zip
temp_dir=$(mktemp -dt)
( cd "$temp_dir"
  unzip "$source_zip"
  zip -g "$targetZip" .
  # or if you want just the two files: zip -g "$targetZip" textFile.txt binFile.bin
)
rm -rf "$temp_dir"

还有其他语言,带有更方便的zip文件操作库。例如,Perl和Archive :: Zip省略错误检查。

use Archive::Zip;
my $source_zip = Archive::Zip->new("sourceZip.zip");
my $target_zip = Archive::Zip->new("targetZip.zip");
for my $member ($source_zip->members()) {
          # or (map {$source_zip->memberNamed($_)} ("textFile.txt", "binFile.bin"))
    $target_zip->addMember($member);
}
$target_zip->overwrite();

另一种方法是将zip文件挂载为目录。挂载任何一个zip文件就足够了,您可以使用zipunzip在另一侧使用。Avfs为许多存档格式提供只读支持。

mountavfs
target_zip=$PWD/targetZip.zip
(cd "$HOME/.avfs$PWD/sourceZip.zip#" &&
 zip -g "$target_zip" .)  # or list the files, as above
umountavfs

Fuse-zip提供对zip存档的读写访问权限,因此您可以使用来复制文件cp

source_dir=$(mktemp -dt)
target_dir=$(mktemp -dt)
fuse-zip sourceZip.zip "$source_dir"
fuse-zip targetZip.zip "$target_dir"
cp -Rp "$source_dir/." "$target_dir" # or list the files, as above
fusermount -u "$source_dir"
fusermount -u "$target_dir"
rmdir "$source_dir" "$target_dir"

警告:我直接在浏览器中键入了这些脚本。使用风险自负。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将权限从一个文件复制到另一个文件

将条目从一个keepass文件复制到另一个

将文件从一个目录复制到另一个目录

将文件从一个NAS复制到另一个

将文件从一个目录复制到另一个目录

将文件从一个文件夹复制到另一个文件夹

将文件系统元数据(modifyDate 等)从一个文件复制到另一个文件

将最后一行从一个excel文件复制到另一个

使用ffmpeg将元数据从一个文件复制到另一个文件

将内容从一个文件夹复制到另一个文件夹

将最后n行从一个文件复制到另一个文件

将包含特定文本的行从一个文件复制到另一个文件

将所有标签从一个FLAC文件复制到另一个文件?

如何将组图层集从一个文件复制到另一个文件?

PHP将多个元素从一个XML文件复制到另一个XML文件

将代码从一个文件复制到另一个文件的命令

使用Bash将单词从一个文件复制到另一个文件

在C中以相反的顺序将字节从一个文件复制到另一个文件

使用GREP或SED将特定文本从一个文件复制到另一个文件

将所有文件从一个文件夹复制到另一个

将文件名从一个文件夹复制到另一个

Ubuntu终端将行号N从一个文件复制到另一个文件

使用ffmpeg将元数据从一个文件批量复制到另一个文件

将文件从一个目标文件夹复制到另一个

将数据从一个hbase表复制到另一个

将条件从一个对象复制到另一个对象

将特定的列从一个DataTable复制到另一个

将变量从一个TensorFlow图复制到另一个

将架构从一个容器复制到另一个