问题 Zip说明绝对路径,但只保留其中的一部分


zip -r 1.zip /home/username/the_folder

在这里,当我解压缩 1.zip,它会创造 /home/username/the_folder,从我解压缩的任何文件夹。

我如何压缩,说明完整的绝对路径,但是使zip只包含从中开始的文件夹结构,例如,在这种情况下, /home/username

这样,我可以在任何我想要的路径,解压缩,它只会创建 the_folder, 并不是 /home/username/the_folder


2982
2018-06-28 17:08


起源



答案:


使用此命令:

cd path_under_folder_to_zip && \
zip -r 1.zip folder_to_zip >/dev/null && \
mv 1.zip my_current_path

11
2018-06-29 17:05



cd path_under_folder_to_zip && zip -r my_current_path / 1.zip folder_to_zip> / dev / null - Daniel Pérez Rada
在macOS上运行得很好:)谢谢。 - Guy Kahlon


答案:


使用此命令:

cd path_under_folder_to_zip && \
zip -r 1.zip folder_to_zip >/dev/null && \
mv 1.zip my_current_path

11
2018-06-29 17:05



cd path_under_folder_to_zip && zip -r my_current_path / 1.zip folder_to_zip> / dev / null - Daniel Pérez Rada
在macOS上运行得很好:)谢谢。 - Guy Kahlon


在指定要压缩的文件时使用相对路径。

cd /home/username
zip -r 1.zip ./the_folder

然后当你解压缩时,它将是一个相对路径,从解压缩时你所在的任何文件夹开始。


5
2018-06-28 17:17



他希望能够使用绝对路径。请注意'我想要的任何路径'。虽然你说的是有道理的。 - Niraj Nawanit


  1. 项目清单

这个怎么样:

function zipExtraFolder {
    if [ $# -lt 2 ]; then
        echo "provide at least two arguments"
        return
    fi
    folder=$2
    mkdir del
    echo cp -r `dirname $folder` del
    cd del
    echo zip -r ../$1 .
    cd -
    rm -rf del
}

将上面定义为.bashrc中的shell函数,您应该可以随时使用它。 用法如下。

zipExtraFolder 1.zip /home/username/the_folder

1
2018-06-28 17:29



我无法真正阅读该代码,当我开始制作更复杂的zip命令时,这不会导致问题吗? - Hermann Ingjaldsson


只需使用 -j 选项,继续工作 OSX,我不知道linux。

zip -j -r 1.zip /home/username/the_folder


-1
2018-06-28 18:16



我收到一个错误,显然是因为该文件夹中有两个同名文件的实例。即使它们位于不同的子文件夹中。 - Hermann Ingjaldsson
我忘记了, -j 使用时,选项不实用 -r 选项,因为它压缩根文件夹中没有文件夹结构的所有文件。 - jackjr300
如果 -j 不适合您结账 这个答案 - czerasz