维护 zip 文件结构

维护 zip 文件结构

我有一个目录

main_folder
  first_folder
    second_folder
      empty.txt
      another_folder
        another_empty.txt

我想压缩second_foldermain_folder所以我用命令压缩了

zip -jr first_folder/zip_file first_folder/second_folder

该 zip 文件包含

empty.txt
another_empty.txt

但我想要

empty.txt
another_folder
  another_empty.txt

我怎样才能拥有它?

答案1

您设置的 -j(垃圾路径)标志会删除您想要的文件夹路径,因此会破坏您想要的效果。话虽如此,但我真的没有看到只执行 second+ 的方法。摘自手册页:

您可能希望创建一个包含 foo 中的文件的 zip 存档,而不记录目录名称 foo。您可以使用 -j 选项省略路径,例如:
zip -j foo foo/*

据我所知,这只是它在“zip”中的工作方式(man 中没有任何内容表明不是这样)。

编辑:我有点追随另一个人,试图找出如何做你想做的事情。

你为什么不直接导航到目录并压缩它呢?如果你想回到原来的位置,这个就可以了(虽然在我看来这是浪费时间)。

cd 第一个文件夹/第二个文件夹/ && zip -r 名称 ./ && mv 名称.zip ${here} && cd -

(感谢@KarthikT 提供的“cd -”快捷方式)。

答案2

zip 手册页

-j --junk-paths Store just the name of a saved file (junk the path), and do not store directory names. By default, zip will store the full path (relative to the current directory).

只需删除 -j 即可解决问题。

相关内容