Create zip file and ignore directory structure
我需要使用以下命令创建一个zip文件:
1 | zip /dir/to/file/newZip /data/to/zip/data.txt |
这可行,但是创建的zip文件会创建一个目录结构,将目录模仿为原始文件。 我不需要很多额外的文件夹。
粗略浏览手册页或Google搜索时,我没有找到答案。
您可以使用
1 2 3 4 5 | -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). |
使用
因此,解决方法可以是:
1 2 3 | cd path/to/parent/dir/; zip -r complete/path/to/name.zip ./* ; cd -; |
或在线版本
1 | cd path/to/parent/dir/ && zip -r complete/path/to/name.zip ./* && cd - |
如果您不希望
使用
1 2 3 | -j 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 path). |
有点相关-我正在寻找一种解决方案,以对目录执行相同的操作。
不幸的是
这是一个很好的解决方案:
https://superuser.com/questions/119649/avoid-unwanted-path-in-zip-file
或者,您可以创建指向文件的临时符号链接:
1 2 3 | ln -s /data/to/zip/data.txt data.txt zip /dir/to/file/newZip !$ rm !$ |
这也适用于目录。
保留父目录,以便
压缩目录时,将父目录保留在存档中将有助于避免稍后解压缩存档文件时乱码当前目录
因此,为了避免保留所有路径,并且由于不能同时使用-j和-r(您会得到error),因此可以执行以下操作:
1 2 3 | cd path/to/parent/dir/; zip -r ../my.zip ../$(basename $PWD) cd -; |
因此,现在
1 2 3 4 5 6 | parent-directory ├── file1 ├── file2 ├── dir1 │ ├── file3 │ ├── file4 |
而不是用解压缩的文件乱码当前目录:
1 2 3 4 5 | file1 file2 dir1 ├── file3 ├── file4 |
只需使用
结构
1 | zip -jrm /path/to/file.zip /path/to/file |