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.