如何压缩当前目录的内容减去所有隐藏文件?

如何压缩当前目录的内容减去所有隐藏文件?

如何压缩当前所在文件夹的内容(不包括隐藏文件和文件夹)?

zip -r extension.xpi . -x "*/.*"

这是我到目前为止所拥有的,但我仍然收到隐藏文件。

答案1

*/.*将只包含子目录中的隐藏文件。但不在当前目录或子目录的子目录中。试试这个zip -r extension.xpi . -x ".*"或那个zip -r extension.xpi . -x .\*

我想反斜杠应该是关键,这是手册页中的引用:

显式排除指定的文件,如下所示:

zip -r foo foo -x \*.o

这将包括 foo.zip 中 foo 的内容,同时排除所有以 .o 结尾的文件。反斜杠避免了 shell 文件名替换,因此 zip 在所有目录级别执行名称匹配。

答案2

接受的答案不适用于以下测试目录结构:

$ tree .
.
├── adir1
│   ├── afile1
│   ├── afile2
│   ├── afile3
│   └── afile4.txt
├── adir2
│   ├── afile1
│   ├── afile2
│   ├── afile3
│   └── afile4.txt
├── adir3
│   ├── afile1
│   ├── afile2
│   ├── afile3
│   └── afile4.txt
├── afile1
├── afile2
├── afile3
├── foo.test

这是适用于这种情况的解决方案(我认为这是更一般的情况)。

 $ find . -type f -not -path '*/\.*' -exec zip -r test.zip {} +

例子

$ find . -type f -not -path '*/\.*' -exec zip -r test.zip {} +
updating: adir1/afile1 (stored 0%)
updating: adir1/afile1.zip (stored 0%)
updating: adir1/afile2 (stored 0%)
updating: adir1/afile3 (stored 0%)
updating: adir1/afile4.txt (stored 0%)
updating: adir2/afile1 (stored 0%)
updating: adir2/afile2 (stored 0%)
updating: adir2/afile3 (stored 0%)
updating: adir2/afile4.txt (stored 0%)
updating: adir3/afile1 (stored 0%)
updating: adir3/afile2 (stored 0%)
updating: adir3/afile3 (stored 0%)
updating: adir3/afile4.txt (stored 0%)
updating: afile1 (stored 0%)
updating: afile2 (stored 0%)
updating: afile3 (stored 0%)
updating: foo.test (deflated 87%)

相关内容