如何使用zip递归压缩文件但排除所有位置下指定名称的文件?
如何使用zip递归压缩文件但排除所有位置下指定名称的文件?
我完全懂你的需求啦——要递归压缩所有文件,但不管那个叫excludethisfile的文件出现在当前目录还是哪个子文件夹里,都得把它排除掉。你提到的那些类似问题(比如只排除单个子文件夹、按扩展名过滤)确实和你的场景不一样,咱们得用zip的专属参数来实现全目录精准匹配文件名排除的效果。
直接给你能用的命令:
zip -r output.zip . -x "**/excludethisfile"
我给你拆解一下每个部分的作用,方便你理解和调整:
-r:这个参数告诉zip要递归处理所有子目录,确保不会漏掉深层文件夹里的文件output.zip:这是你最终要生成的压缩包文件名,你可以改成任何你想要的名字,比如my_archive.zip.:指定要压缩的起始目录是当前目录,如果你想压缩某个特定文件夹,把.换成目标文件夹的路径就行,比如./my_project-x "**/excludethisfile":这是实现排除的核心参数!**/表示匹配任意层级的目录(包括当前目录本身),后面跟你要排除的文件名,这样不管这个文件藏在哪个层级的目录里,都会被自动跳过,不会被加入压缩包
如果你担心不同shell的通配符差异,也可以用更稳妥的写法,同时覆盖当前目录和所有子目录的目标文件:
zip -r output.zip . -x "excludethisfile" "*/excludethisfile"
用这个命令处理你给出的文件结构时,所有otherfile系列文件都会被正常压缩,而各个目录下的excludethisfile都会被排除在外,完全符合你的要求~
备注:内容来源于stack exchange,提问作者gb-1957
相关产品推荐
相关产品推荐

