我有一个目录
main_folder
first_folder
second_folder
empty.txt
another_folder
another_empty.txt
我想压缩second_folder
,main_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
-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 即可解决问题。