首先我想说,我很清楚这个问题已经在多个 Stack Exchange 网站上被问过很多次了,但是没有一个对我有用。
所讨论的问题:
压缩没有父目录的目录中的所有文件和子文件夹(unix.stackexchange.com)
压缩档案而不包含父目录(askubuntu.com)
如何压缩目录而不压缩父目录?[重复](askubuntu.com)
我目前正在编写一个小脚本,如果运行,它将使用 压缩指定的文件夹wsl zip
。我遇到的问题是,如果我使用绝对路径来告诉命令要压缩什么,它将包含整个路径,而不是仅从最后一个文件夹(我实际想要压缩的文件夹)开始。
关于这个问题,许多已回答的问题都建议在尝试压缩之前使用cd
或pushd
,并从命令中省略绝对路径zip
。然而,在我的例子中,这就是失败的地方。
我正在使用适用于 Linux 的 Windows 子系统来访问该zip
命令,但我是在 Windows 控制台内执行此操作的。我正在使用的命令是:
> wsl -e zip -r absolute/path/to/folder.zip absolute/path/to/folder
但这会导致 zip 文件结构如下:
folder.zip
absolute
path
to
folder
*
而我想要的结果是:
folder.zip
folder
*
我尝试使用命令cd
来省略命令中的绝对路径zip
,但没有成功。因为我需要从 Windows 控制台而不是 WSL 控制台运行命令,所以以下不是一个选项:
> wsl ~
~$ cd absolute/path/to
absolute/path/to$ zip -r folder.zip folder
相反,我尝试使用如下命令:
> wsl -e "cd absolute/path/to && zip -r folder.zip folder"
但这导致了以下错误:
<3>WSL (10963) ERROR: CreateProcessCommon:559: execvpe(cd) failed: No such file or directory
如果我将命令简化为如下形式,则会出现相同的错误:
> wsl cd absolute/path/to
cd
因此问题又来了,当我无法使用或时,如何从 zip 中省略完整目录pushd
?