命令行压缩目录中的所有内容,但不包含任何目录作为根目录

时间:2014-07-03 00:37:10

标签: macos unix zip command-line-interface

我无法为我的生活找到答案。因为我以特定的方式打包一个zip用于构建过程,所以我不想在根目录下的结果zip中包含一个文件夹。例如,如果我有这个文件路径:

MyFolder/
    A.png
    B.txt
    C.mp3

我使用命令:

zip -r -X "MyFolder.zip" MyFolder/*

cd MyFolder; zip -r -X "../MyFolder.zip" *

我最终获得了一个包含MyFolder根元素的zip文件。我想要的是当我解压缩它是将所有这些转储到目录中,如下所示:

A.png
B.txt
C.mp3

换句话说,我不希望MyFolder或任何其他文件夹作为根目录。我仔细阅读了整本手册,并尝试了大量的选项和大量的Google搜索,而zip似乎只是真的希望在根目录下有一个文件夹。

谢谢!

3 个答案:

答案 0 :(得分:36)

这是Archive Utility的错(Mac OS X unzipper应用程序)。当我从命令行使用unzip命令时,效果很好。

cd MyFolder; zip -r -X "../MyFolder.zip" *

答案 1 :(得分:8)

偶然发现了这个答案但不想改变目录。我发现-j选项很有用,它将所有文件添加到zip的根目录。请注意,它是所有文件,因此不会保留子目录结构。

所以使用这个文件夹结构:

MyFolder
 - MyFile1
 - MySubFolder
   - MyFile2

这个命令:

zip -rj MyFolder.zip MyFolder

你明白了:

MyFolder.zip
 - MyFile1
 - MyFile2

答案 2 :(得分:1)

我发现了使用Mac(mac os)上的终端应用程序 加密的zip文件 的更简单方法,只需从文件夹中的文件

终端命令

zip -j -e wishedname.zip yourfolder/*

就是这样。享受吧!

*

有关在终端应用程序中 zip命令的更多信息

man zip

-j -e 做什么?

-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).

-e
--encrypt
Encrypt  the contents of the zip archive using a password which is entered on the terminal in response to a prompt (this will not be echoed; if standard error is not a tty, zip will  exit with an error).  The password prompt is repeated to save the user from typing errors.