2012-01-17 125 views
1

我试图在centos 5中使用此ssh命令来压缩文件夹和文件的完整目录,但排除了下面的示例。它不工作。Zip命令用于排除目录和文件

zip -r file.zip * -x dir1 -x dir2 -x file1 -x file2 

或这一个

zip -r file.zip * -x "dir1" -x "dir2" -x "file1" -x "file2" 

它仍然只是拉链起来整个目录和一切吧。我不想做DIR1 DIR2文件1文件2。

我需要知道正确的-x语法才能使排除功能正常工作。

+0

是的,这是一个ssh脚本的编程问题。 – sven30 2012-01-17 17:44:20

+0

Stack Overflow是编程和开发问题的网站。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://stackoverflow.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[Unix&Linux堆栈交换](http://unix.stackexchange.com/)会是一个更好的地方。 – jww 2018-01-01 01:08:39

+0

[Unix的zip目录但排除特定的子目录](https://superuser.com/q/312301/173513),[如何排除目录和文件压缩目录?](https://askubuntu.com/q/371579 ),[如何在压缩文件时排除目录](https://unix.stackexchange.com/q/219101/56041)等等。 – jww 2018-01-01 01:08:48

回答

1

-x选项有点奇怪;您列出文件,从-x,并用@标志结束:

zip file.zip -r * -x dir1 dir2 file1 file2 @ 

我也严重怀疑你想在你的文件名\在Unix系统上...确保您的路径是确定。 /是通常的路径分隔符。

例子:

mkdir tmp5 
cd tmp5 
touch a b c d e f g 
zip foo.zip -r * -x e f g @ 
    adding: a (stored 0%) 
    adding: b (stored 0%) 
    adding: c (stored 0%) 
    adding: d (stored 0%) 

随着子目录,你可以很容易地忽略使用通配符他们内容,但似乎*导致目录本身被列入(空):

mkdir x y z 
touch {a,b,c} {x,y,z}/{a,b,c} 
zip foo.zip -r * -x c y y/* z z/* @ 
    adding: a (stored 0%) 
    adding: b (stored 0%) 
    adding: x/ (stored 0%) 
    adding: x/b (stored 0%) 
    adding: x/a (stored 0%) 
    adding: x/c (stored 0%) 
    adding: y/ (stored 0%) 
    adding: z/ (stored 0%) 

你可能更好地省略*和明确列出这些事情你做希望 ...包括

zip core-latest-$version.zip -r cp images include mobile stats \ 
    -x cp/includes/configure.php @ 

\最后只是延续到下一行;你可以把它全部在一行没有尾随\

+0

好,很奇怪。我从about.com得到了反斜杠,他们做了某种-x \ * *。0用于排除以.0结尾的所有文件。不知道。无论如何,我试过你的命令,它仍然无法正常工作。这是我的实际命令。 zip core-latest.zip -r * -x模板-x stats -x cp/includes/configure.php @ – sven30 2012-01-17 17:13:30

+0

应该只需要在头部有一个'-x'和在末尾有一个'@'......并且,你真的在​​你压缩的目录中运行'zip'吗? – BRFennPocock 2012-01-17 17:16:22

+0

here我的脚本: echo -n“输入新版本(v1-1)” 阅读版本 cd/home/core/www/ rm -rf core-latest - *。zip zip core- latest- $ version .zip -r * -x模板统计信息cp/includes/configure.php @ chown -R core.core core-latest- $ version.zip – sven30 2012-01-17 17:18:31

5

对我特别的系统,以排除目录我不得不把在我排除的目录报价和它的工作就像一个魅力:

zip -r myarchive.zip target -x "target/exclude1/*" "target/exclude2/*" 

注:

- 这既排除目录排除和它里面的所有文件。

- 必须使用的完整路径要包括和排除的目录!

- 只要排除是在该行的末尾如果使用腻子你不需要@符号

-1

,请按照下列步骤操作:

  1. 输入目录: $ cd directory_name并按回车键
  2. 写命令:

    $ zip -r file_name.zip . -x \*excludingfolderName\* 
    

zip之后使用.作为当前目录,*是通配符。

相关问题