tarファイル(与えられたパターンを持つファイルを除く)

tarファイル(与えられたパターンを持つファイルを除く)

私は次のディレクトリ構造を持っています(ここに提供されているすべての名前はディレクトリであり、すべてファイルとサブディレクトリを含みます)。

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個のサブディレクトリまで可変です。

私はディレクトリからツリー全体をtarしたいのですが、その下のすべてをa除外xしたいと思います。a/xa/a/xa/b/x

使用を検討していますが、findよりgrep -v簡単な方法があるかどうか疑問に思います。

答え1

--exclude@Kusalanandaのコメントのおかげで、GNU tarで提供されているオプションを使用できます。

指定されたディレクトリの下のすべての項目を除外するにはx(ディレクトリ自体は除く):

tar cf a.tar --exclude='x/*' a

ディレクトリxとその下のすべての項目を除外するには(ただし、指定された一般ファイルも除外されることに注意してくださいx):

tar cf a.tar --exclude='x' a

関連情報