在创建tarball时排除常见的子目录。

13 浏览
0 Comments

在创建tarball时排除常见的子目录。

我正在创建一个管理在ClearCase中的大型代码库的tarball。每个目录都有一个名为\".CC\"的子目录。我想将这些目录排除在我的tarball之外。\n我找到了在创建.tar.gz文件时排除目录,但是排除这些目录似乎需要在命令行上传递每个\".CC\"目录。在我的情况下,这是不切实际的。\n有没有办法排除符合特定模式的目录?\n编辑:\n我不是在问如何排除一个特定的有限目录列表。我在问如何排除所有以特定模式结尾的目录。

0
0 Comments

问题的原因是需要在创建tarball时排除常见的子目录。解决方法是使用下面的bash脚本:

#!/bin/bash
echo -n "Please enter the name of the tar file you wish to create with out extension "
read nam
echo -n "Please enter the path to the directories to tar "
read pathin
echo tar -czvf $nam.tar.gz
excludes=`find $pathin -iname "*.CC" -exec echo "--exclude \'{}\'" \;|xargs`
echo $pathin
echo tar -czvf $nam.tar.gz $excludes $pathin

这段脚本会打印出所需的命令,您可以直接复制粘贴到命令行中。可能还有一种更优雅的方法可以直接提供给命令行。

*.CC可以替换为任何其他常见的扩展名,这个脚本应该仍然有效。

0
0 Comments

从上述内容中可以整理出以下文章:

标题:在创建tar压缩包时排除常见子目录的原因及解决方法

在创建tar压缩包时,有时候我们希望排除一些常见的子目录,以减少压缩包的大小或简化文件结构。然而,手动输入排除的子目录路径可能会变得繁琐且容易出错。因此,我们需要寻找一种更简便和可靠的方法来实现这一目标。

解决方法是使用一条命令,通过使用find命令配合xargs命令来排除常见子目录。具体来说,可以使用以下命令来排除子目录:$(find root -type d -name .CC -exec echo "--exclude \'{}\'" \;|xargs)

在这条命令中,find命令的参数root表示要搜索的根目录,-type d表示只搜索目录,-name .CC表示搜索名称为.CC的目录。然后,-exec参数指定要执行的操作,这里是echo "--exclude \'{}\'",即输出符合条件的目录路径并添加"--exclude"前缀。最后,通过xargs命令将输出的路径作为参数传递给tar命令。

此外,find命令还支持各种模式匹配,甚至可以在findxargs之间使用grep等命令进行筛选。

通过使用上述解决方法,我们可以更方便地排除常见的子目录,使得创建的tar压缩包更加简洁和高效。

0