我正在创建一个在ClearCase中管理的大型代码库的tarball。每个目录都有一个名为" .CC"的子目录。我想把这些从我的tarball中排除。
我找到了Excluding directory when creating a .tar.gz file,但不包括那个似乎需要在commndline上传递每个.CC目录。这在我的案例中是不切实际的。
有没有办法排除符合特定模式的目录?
编辑: 我不是问如何排除特定的有限目录列表。我问的是如何排除以特定模式结束的所有目录。
答案 0 :(得分:1)
您可以输入--exclude 'root/a/.CC' --exclude 'root/b/.CC' ...
$(find root -type d -name .CC -exec echo "--exclude \'{}\'" \;|xargs)
您可以使用find
支持的任何模式,甚至可以在find
和xargs
之间使用grep之类的内容。
答案 1 :(得分:0)
以下bash脚本应该可以解决问题。它使用@Marcus Sundman给出的答案。
#!/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可以换成任何其他常见的扩展名,这应该仍然有用。