*.zip
パターンが機能しない理由tar
:
tar cfjv backup.tar.bz2 --exclude mydir/files/*.zip mydir
別の構文がありますか?
答え1
除外パターンを引用する必要があります。mydir/files/*.zip
そうしないと、シェルはパターンを拡張し(ワイルドカード)、複数のファイルと一致する可能性があり、コマンドラインの意味は予想どおりに大きく異なります。
これはtar
、元のコマンドラインを次に変更することを意味します。
$ tar cfjv backup.tar.bz2 --exclude "mydir/files/*.zip" mydir
最初はスイッチに問題があると思いましたcfjv
。これは、tar
「現代の」コマンドラインスイッチ(接頭辞付き)とは-
非常に異なって扱われる古代のコマンドラインスイッチです。それはあなたがそれをする理由です。いいえ移行後のコンテンツであっjv
ても、名前付きアーカイブをインポートします。f
Mac OS X のドキュメントのtar
「互換性」セクションにこの内容が記載されています。
バンドルパラメータ形式は、過去の実装との互換性のためにサポートされています。これは最初の単語(先行文字なし)で構成され、各文字はオプションを表します。パラメータの後には別の単語が続きます。パラメーターの順序は、バンドル命令の対応する文字順序と一致する必要があります。例えば、
tar tbf 32 file.tar
3つのフラグt、b、fを指定します。 bフラグとfフラグの両方に引数が必要なので、コマンドラインには2つの追加エントリが必要です。 32はbフラグのパラメータ、file.tarはfフラグのパラメータです。
答え2
現在のディレクトリとすべてのサブディレクトリにあるすべての.zipファイルを検索するには、次の手順を試してください。
./foldername -type f -name '*.zip' 検索
現在のディレクトリとすべてのサブディレクトリのすべての.zipファイルを除外するには、次のようにします。
./foldername を探す -type f -name '*.zip' > .txt を除く
現在のディレクトリとすべてのサブディレクトリのすべての.zipファイルを除いてtarアーカイブを作成するには、次のようにします。
tar -zcvfバックアップフォルダ名.tar.gz -X除外.txt./フォルダ名