参考资料:http://no001.blog.51cto.com/1142339/547862

 # zip -P 123456 test.zip test.txt

-P 123456 是加密密码(-P必须用大写,否则无效!!)
test.zip 是生成的压缩文件
test.txt 是被压缩的文件

zip [参数] <压缩包> <源文件>

使用zip格式打包文件
   
-r 递归,将指定目录下的所有文件和子目录一并处理
    -S 包含系统和隐藏文件
    -y 直接保存符号连接,而非该连接所指向的文件
    -X 不保存额外的文件属性
    -m 将文件压缩并加入压缩文件后,删除源文件
    -<压缩级别> 1~9,数字越大,压缩率越高
    -F 尝试修复已损坏的压缩文件
    -T 检查备份文件内的每个文件是否正确无误
    -q 不显示指令执行过程
    -g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件
    -u 更新压缩包内文件
    -f 更新压缩包内文件。如果符合条件的文件没有包含在压缩包中,则压缩后添加
    -$ 保存第一个被压缩文件所在磁盘的卷标
    -j 只保存文件名称及其内容
    -D 压缩文件内不建立目录名称
    -i <表达式> 压缩目录时,只压缩符合条件的文件
    -x <表达式> 排除符合条件的文件
    -n <文件名后缀> 排除指定文件名后缀的文件(不压缩具有特定字尾字符串的文件)
    -b <缓存路径> 指定临时文件目录
    -d <表达式> 从压缩文件内删除指定的文件
    -t <日期时间> 把压缩文件的日期设成指定的日期
    -o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同
    -A 调整可执行的自动解压缩文件
    -c 替每个被压缩的文件加上注释
    -z 替压缩文件加上注释
    -k 使用MS-DOS兼容格式的文件名称。
    -l 压缩文件时,把LF字符置换成LF+CR字符。
    -ll 压缩文件时,把LF+CR字符置换成LF字符。

unzip [参数] <压缩文件> [压缩包中将被释放的文件]

解压zip压缩包文件
    -P <密码> zip压缩包的密码
    -d <路径> 指定解压路径
    -n 解压缩时不覆盖原有文件
    -f 覆盖原有文件
    -o 不经询问,直接覆盖原有文件
    -u 覆盖原有文件,并将压缩文件中的其他文件解压缩到目录中
    -l 显示压缩文件内所包含的文件
    -t 检查压缩文件是否正确
    -z 显示压缩包注释
    -Z unzip -Z等于执行zipinfo指令
    -j 不处理压缩文件中原有的目录路径
    -C 压缩文件中的文件名称区分大小写
    -L 将压缩文件中的全部文件名改为小写
    -s 将文件名中的空格转换下划线
    -X 解压缩时保留文件原来的UID/GID
    -q 执行时不显示任何信息
    -v 执行是时显示详细的信息
    -c 将解压缩的结果显示到屏幕上,并对字符做适当的转换
    -p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换
    -a 对文本文件进行必要的字符转换
    -b 不要对文本文件进行字符转换
    -x <表达式> 处理里排除压缩包中的指定文件
    -M 将输出结果送到more程序处理


相关命令行(环境:Mac OS 10.7.2 Lion, eclipse):

package org.bruce.file.handle.config;


/**
 * @author Bruce Yang
 * zip 命令不支持 -I, -S 参数~
 */
public interface IZipCompleteCmd {
	
	// 将当前目录下的所有文件盒文件夹全部压缩成 myFile.zip 文件,-r表示递归压缩子目录下所有文件~
	public final String _zipCurrentDir = 
		"zip -r /Users/user/Desktop/Desktop.zip /Users/user/Desktop/*";
	
	// 递归,密码~
	public final String _zipWithPwd = 
		"zip -r -P 12345 /Users/user/Desktop/Desktop.zip /Users/user/Desktop/*";
	
	// 删除 zip 压缩包里面特定格式的文件~
	public final String _zipDeleteSpecifiedFormatFiles = 
		"zip -d /Users/user/Desktop/Y3wFramework.zip *.java";
	
	// 删除 zip 压缩包里面特定格式的文件(正则匹配)~
	/** 注释:?表示一个字符,如果用 * 表示任意多个字符 */
	public final String _zipDeleteSpecifiedFormatFiles2 = 
		"zip -d /Users/user/Desktop/Y3wFramework.zip *.j?va";
	
	// 你可以使用 zip 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:
	public final String _zipMutilpeFilesOrDirs = 
		"zip -r filename.zip file1 file2 file3 /Users/user/Desktop/test";
	
	
	// 我有一个很大的压缩文件large.zip,我不想解压缩,只想看看它里面有什么:
	public final String _unzipPreivewLargeZip = 
		"unzip -v /Users/user/Desktop/Y3wFramework.zip";
	
	
	/** 
	 * 我用-v选项发现music.zip压缩文件里面有很多目录和子目录,并且子目录中其实都是歌曲mp3文件,
	 * 我想把这些文件都下载到第一级目录,而不是一层一层建目录:
	 * 注意:不可胡乱执行,到时候满屏的文件~~
	 */
	public final String _unzipReconstructZipStructure = 
		"unzip -j /Users/user/Desktop/123/Y3wFramework.zip";
	
	
	// 我下载了一个压缩文件large.zip,想验证一下这个压缩文件是否下载完全了
	public final String _unzipTestDownloadCompleted = 
		"unzip -t /Users/user/Desktop/Y3wFramework.zip";
	
	
	
}

package org.bruce.file.handle.config;


/**
 * @author Bruce Yang~
 * 配置采用哪种备份方案~
 */
public interface IBakupHelper {
	public enum Solution {
		CopyWithJava,
		CopyWithTerminal, 
		ZipWithJava,
		ZipWithTerminal,
    }; 
	
//    public final Solution CHOICE = Solution.CopyWithJava;
//    public final Solution CHOICE = Solution.CopyWithTerminal;
//    public final Solution CHOICE = Solution.ZipWithJava;
	public final Solution CHOICE = Solution.ZipWithTerminal;
	
	// 递归~
	public final String _zipRecursively = "zip -r ";
	
	// 递归,删除源文件~
	public final String _zipRemoveSource = "zip -r -m ";
	
	// 递归,不显示指令执行过程~
	public final String _zipQuietly = "zip -r -q ";
	
	// -n <文件名后缀> 排除指定文件名后缀的文件(不压缩 而非 排除在压缩包外)
	// 适用于单个筛选,多个怎么弄?麻痹的终于试出来了,连接符要用 “:”
	// 如果以 : 结尾的话,会导致所有的文件都不被压缩(可能是因为""任何字符串的原因)~
	public final String _zipIncludeButDontCompress = 
		"zip -r -n .project:txt:pdf:prefs:classpath:sql:mid:.wav:.properties ";
	
	
	/** 要注意区分表达式和文件名后缀的区别!! -x 表示不将某些文件置入压缩包! */
	public final String _zipExcludeDirectly = 
		"zip -x *.java *.class *.jar *.wav *.mp3 *.mid -q -r ";
	
	
	// -<压缩级别> 1~9,数字越大,压缩率越高
	public final String _zipLargest = "zip -r -1 ";
	public final String _zipSmallest = "zip -r -9 ";
	
	// 查看压缩包的内容列表~
	public final String _unzipEcho = "unzip -v ";
	
	// 作用未知,能够正常执行,不知有何玄妙~
	public final String _zipWithoutDirStruct = "zip -D -r ";
	
	
	public String _zipCmdCurrentUsed = _zipQuietly;
}




Logo

更多推荐