Tarは隠しフォルダだけでなく、すべてのファイルを除外します。

Tarは隠しフォルダだけでなく、すべてのファイルを除外します。

私のホームフォルダ内のすべてのアイテムをtarでパッケージ化したいのですが、隠しフォルダやtest_tree(実際には他のフォルダ内に入れ子になっている)などの特定のフォルダを除外したいと思います。

次のコマンドを実行しようとしています。

tar -vcf everything.tar . --exclude='.*' --exclude='test_tree'

ホームディレクトリ内にありますが、cd ~生成されたtarは完全に空です。どうしたの?

答え1

私も同じ問題があります。 --exclude='.*' MacOS ではうまく動作しますが、Linux では動作しません。あなたはできます、

tar -vcf everything.tar. --exclude='./.*' --exclude='テスト_ツリー'

または

tar -vcf everything.tar. --exclude='.[^/]*' --exclude='テスト_ツリー'

答え2

問題は、.ソースコードとして使用し、tarで始まるすべての項目を除外するように指示することです。.たとえば、絶対パスを試してみてください。すでにそのディレクトリにある場合は正しく機能します/home/user"$PWD"

答え3

最善の解決策は、問題の名前を含むファイルを集めて次のことを行うことです。

tar cf my-precious.tar -Xファイルの犯罪者。

(-XがGNUismかどうかはわかりませんが... GNU tarを使用しているようです。)

答え4

マッチ「隠しファイル」シェルスタイルモードを使用するには.[^.]*

.*特殊ディレクトリエントリの一致.(および)を使用してください..。これは一般的に望むものではありません。

関連情報