我有以下目录结构(此处给出的所有名称都是目录;它们都包含文件和子目录):
a
a/a, a/b, a/c, ..., a/x, a/y, a/z
a/a/a, a/a/b, a/a/c, ..., a/a/x, a/a/y, a/a/z
a/b/a, a/b/b, a/b/c, ..., a/b/x, a/b/y, a/b/z
...
a/x/a, a/x/b, a/x/c, ..., a/x/x, a/x/y, a/x/z
这些字母只是描述性的;他们不是真名。此外,深度是可变的,最多有 10 个左右的子目录。
我想从目录中压缩整个树a
,但排除任何名为x
.因此,在上面,我想将除a/x
其下的所有内容都放在焦油中;a/a/x
以及它下面的一切;以及a/b/x
它下面的一切。
我正在考虑使用find
,grep -v
但我想知道有没有更简单的方法?
答案1
感谢 @Kusalananda 的评论,我可以使用--exclude
GNU tar 中提供的选项:
要排除任何指定目录下的所有内容x
(但不包括目录本身):
tar cf a.tar --exclude='x/*' a
要排除目录x
及其下的所有内容(但请注意,这也排除了任何指定的常规文件x
):
tar cf a.tar --exclude='x' a