Unix压缩子目录不包括父目录

hen*_*ald 11 unix terminal zip

我想压缩一个子目录并将其发送到其他地方,我遇到的问题是当我使用zip命令时它还包括我不想要的所有不需要的目录层.

例如

zip -r /new.zip /Unwanted1/Unwanted2/wanted1/wanted2/file.txt

###unzipped produces the following
/Unwanted1/Unwanted2/wanted1/wanted2/file.txt

###I want
/wanted1/wanted2/file.txt
Run Code Online (Sandbox Code Playgroud)

更新:我想要压缩的目录有很多嵌套目录,因此是-r.处理绝对路径也很棒,这个旧解决方案用来讨论这个地方,但我真的不喜欢它.也许这是最好的(唯一的)方式.

Ica*_*sNM 17

您必须将目录更改为您想要启动的位置,或者可以选择"zip"来为您执行此操作.如果你懒得阅读手册页中的大量选项,就像我一样,首先只是'cd',即使是在脚本中.或者,您可以将整个内容括在括号中,而不会影响shell或脚本的工作目录:

(cd Unwanted1/Unwanted2; zip -r ~/new.zip ./wanted/file.txt)
Run Code Online (Sandbox Code Playgroud)

或者既然你正在使用-r,你可能想要的不仅仅是file.txt,所以:

(cd Unwanted1/Unwanted2; zip -r ~/new.zip wanted)
Run Code Online (Sandbox Code Playgroud)

或使用pushd/popd跳入/跳出:

pushd Unwanted1/Unwanted2
zip -r ~/new.zip wanted
popd
Run Code Online (Sandbox Code Playgroud)

这适用于sh/bash/csh/tcsh.