tar 排除文件 *.zip

tar 排除文件 *.zip

为什么*.zip模式不起作用tar

tar cfjv backup.tar.bz2 --exclude mydir/files/*.zip mydir

还有其他语法吗?

答案1

您将需要引用排除模式 ,mydir/files/*.zip否则 shell 将扩展它(通配符),可能/可能匹配多个文件,并且命令行的含义将与您的预期有很大不同。

这意味着将原始tar命令行更改为

$ tar cfjv backup.tar.bz2 --exclude "mydir/files/*.zip" mydir

我最初以为开关出了问题cfjv。这些是古老的命令行开关,tar其处理方式与更“现代”的命令行开关(前缀为-)非常不同。这就是你这样做的原因不是获取一个名为的存档,jv即使这是f切换后的内容。

Mac OS X的手册tar在“兼容性”部分提到了这一点:

支持捆绑参数格式以与历史实现兼容。它由一个初始单词(没有前导 - 字符)组成,其中每个字符表示一个选项。参数后面作为单独的单词。参数的顺序必须与捆绑命令字中相应字符的顺序匹配。例如,

      tar tbf 32 file.tar

指定三个标志 t、b 和 f。 b 和 f 标志都需要参数,因此命令行上必须有两个附加项。 32 是 b 标志的参数,file.tar 是 f 标志的参数。

答案2

要搜索当前目录和所有子目录中的所有 .zip 文件,请尝试:

查找 ./foldername -type f -name '*.zip'

要排除当前目录和所有子目录中的所有 .zip 文件,请尝试以下操作:

查找 ./foldername -type f -name '*.zip' > 排除.txt

要创建 tar 存档,不包括当前目录和所有子目录中的所有 .zip 文件,请尝试以下操作:

tar -zcvf 备份文件夹名称.tar.gz -X 排除.txt ./文件夹名称

相关内容