提取tar.gz归档文件时如何排除顶层目录下指定文件
解决tar提取时仅排除顶层指定文件的问题
要仅排除归档顶层的test1文件,同时保留子目录a/test1,可以使用以下命令:
tar -xvf archive.tar.gz --exclude='test1' --no-wildcards-match-slash
原理说明
--no-wildcards-match-slash是tar的关键选项,它会限制通配符模式不匹配路径中的斜杠。这样--exclude='test1'就只会匹配归档中没有路径前缀的顶层test1文件,不会匹配包含在子目录a/里的test1(因为后者的路径包含斜杠,通配符无法跨斜杠匹配)。
备选方案
如果你的tar版本不支持--no-wildcards-match-slash,可以通过明确指定要保留的内容来间接排除顶层文件:
tar -xvf archive.tar.gz --include='a' --include='a/*' --exclude='test1'
这个命令先声明要保留a目录及其下所有内容,再排除顶层的test1,同样能达到目标,但需要逐个列出需要保留的子目录,适合归档结构简单的场景。
内容的提问来源于stack exchange,提问作者Esspapier135
相关产品推荐
相关产品推荐

