Answers:
因此,如果我理解正确,则您尝试将文件和文件夹归档到特定文件夹中,但不包括根文件夹。
例:
/test/test.txt
/test/test2.txt
将test.txt和test2.txt存储在zip中,但不存储在/ test /
您可以cd进入/ test /目录,然后运行类似的命令,
zip -r filename.zip ./*
它将在名为filename.zip的同一文件夹中创建档案。或者,如果您可以从文件夹外部运行它,
zip -r test.zip test/*
/ *是仅包含文件夹内容而不是整个文件夹内容的部分。
编辑:OP需要多个zip,解决方案最终有点麻烦,我很好奇是否有更好的方法可以做到这一点。
for d in */ ; do base=$(basename "$d") ; cd $base ; zip -r $base * ; mv "${base}.zip" .. ; cd .. ; done;
for d in */ ; do base=$(basename "$d") ; zip -rj "${base}.zip" "$d" ; done;
zip -r test.zip test/*
不起作用。有没有从目录外部实现此目的的正确方法?
使用zip命令中的-j
或--junk-paths
选项。
在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).
这个命令怎么样?
$ cd somedir ; zip -r ../zipped.zip . * ; cd ..
cd
。希望有一种方法可以更精确地指定存储的路径。
希望这可以帮助。
(cd directory && zip -r ../out.zip .)
它将主外壳程序保留在同一目录中,并且仅更改命令后死亡的子外壳程序的目录。