tar --exclude=".*" が空のアーカイブを生成するのはなぜですか?

tar --exclude=".*" が空のアーカイブを生成するのはなぜですか?

私が読んだすべての内容によると、.svntarアーカイブを作成するときや他の隠しファイルを除外するには、このモードを使用します。.htaccess--exclude=".*"

すると、空のアーカイブが表示されます。--exclude長いオプションを省略すると、すべてがアーカイブされます。

これは私が使用する完全なコマンドです。

tar -czvf ../_migrate/archive_2012-05-07.tgz --exclude=".*" ./*

私も違いなしでこのバリエーションを試しました。

tar -czvf ../_migrate/archive_2012-05-07.tgz --exclude=".?*" ./*

答え1

あなたのパターンには、アーカイブしたいディレクトリ「.」は含まれていません。パターンとして「.?*」を使用してください。

答え2

GNUを使用しているようですtarパターンマッチングGNUではフルパスで動作し、文字tarで停止しません。ファイルリストを/使用しているので、これはすべてのファイルが一致することを意味します。また、同様のことを試してみます。././*.?*--exclude='.[^/]*'

答え3

.*〜するいつものファイルを使用しているため、含めるすべてのファイルと一致します.(それ自体も一致します.*)。

言及したファイルを除外するために何もする必要はなく、とにかくglobと一致しません。 globは、手動でその機能を有効にしない限り(またはシェルの同等の機能を介して*)ドットが前に付けられたファイルと一致しません。dotglob

関連情報