Linux 上的 zip 命令如何强制仅压缩文件而不是整个目录结构?

Linux 上的 zip 命令如何强制仅压缩文件而不是整个目录结构?

我想要的只是简单的东西。将给定目录的所有内容压缩。

我得到的结果是:

zip -r /home/andi/MEDIA_DUMPS/xyz_media.zip /home/andi/xyz/mega_backend/mega_www/media

如下:

➜  home  tree -L 5
.
└── andi
    └── xyz
        └── mega_backend
            └── mega_www
                └── media
                    ├── csv
                    ├── editor
                    └── img

而我想要的只是这个:

➜  media  tree -L 1
.
├── csv
├── editor
└── img

我使用 TAR 的临时方法:

tar -cjf /home/andi/MEDIA_DUMPS/xyz_media.tar.gz -C /home/andi/xyz/mega_backend/mega_www/media .

基于:https://stackoverflow.com/questions/18681595/tar-a-directory-but-dont-store-full-absolute-paths-in-the-archive

答案1

我如何仅压缩文件而不是整个目录结构?

使用-j(垃圾路径)选项。


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

...

您可能想要创建一个包含 foo 中的文件的 zip 存档,而不记录目录名 foo。

您可以使用 -j 选项来省略路径,如下所示:

zip -j foo foo/*

来源 zip:打包并压缩(存档)文件

答案2

Zip command is:
zip -jr /home/jack/Desktop/Backup/20180314/032256.zip /home/jack/Desktop/bopy`

这将创建一个不包含整个文件夹的 zip 文件。标志“-jr”或“zip -j -r ....zip /../..”

答案3

尝试

查找 /home/andi/xyz/backend/media -type f -print | zip -j name.zip -@

find 查找文件并将它们通过管道传输到 zip。-j 表示丢弃路径,-@ 告诉 zip 从标准输入读取。

希望这对您有帮助。

相关内容