Mac OSXの組み込みzipコンプレッサーでファイルを圧縮すると、抽出されたzip内に「__MACOSX」というタイトルのフォルダーが作成されます。
このフォルダが作成されないように設定を調整できますか、それともサードパーティの圧縮ツールを購入する必要がありますか?
更新:私は問題を解決するOSX用のフリーウェアアプリを見つけました:「YemuZip」
アップデート2:YemuZipはフリーウェアではなくなりました
Mac OSXの組み込みzipコンプレッサーでファイルを圧縮すると、抽出されたzip内に「__MACOSX」というタイトルのフォルダーが作成されます。
このフォルダが作成されないように設定を調整できますか、それともサードパーティの圧縮ツールを購入する必要がありますか?
更新:私は問題を解決するOSX用のフリーウェアアプリを見つけました:「YemuZip」
アップデート2:YemuZipはフリーウェアではなくなりました
回答:
この問題が発生したとき、コマンドラインから実行しました。
zip file.zip uncompressed
編集、多くの反対投票の後:私はしばらく前にこのオプションを使用していましたが、どこでそれを学んだのかわからないので、より良い説明はできません。クリスジョンソンの答えは正しいですが、私は削除しません。1つのコメントが言うように、OPがそれらをファイルなしで圧縮するので、圧縮ファイルからそれらを削除するのではなく、OPが要求するものにより正確です。私も覚えやすいです。
zipサードパーティのアプリであるを使用してファイルを作成する場合、__ MACOSX /ディレクトリが最初に作成されることはありません。
zip -rX file.zip uncompressed_directory
事後修正可能 zip -d filename.zip __MACOSX/\*
zip -d filename.zip \*/.DS_Store
find ~ -type f -name '*.zip' -exec zip -d '{}' __MACOSX/\* \;。を出発点に置き換えます~。
cleanzip(){ zip -d $1 $2 __MACOSX/\* \*/.DS_Store; }。使用法:cleanzip file.zipまたはcleanzip file.zip MORE_JUNK_FILES(2番目のパラメーターはオプション)
ターミナルで、圧縮するフォルダ内:
zip -r -X Archive.zip *
-Xの意味:「_MACOSX」や「._Filename」などの非表示のMacリソースファイルと.dsストアファイルを除外します
注:現在のフォルダと後続のフォルダツリーでのみ機能し、*ワイルドカードが必要です。
-X機能しません。.DS_Storeファイルを除外しません。アプリケーションで機能する理由*は、「。」で始まらないワイルドカード一致ファイルであるzipのみを使用しているためです。ドットファイルを含むディレクトリで試してみてください。そうすれば、含まれていることがわかります。
zip -r -X Archive.zip myfolderフォルダを操作しても、.DS_Storeファイルを含むzipファイルが生成されます。
このコマンドは私のためにそれをしました:
zip -r Target.zip Source -x "*.DS_Store"
Target.zip作成するzipファイルです。Source圧縮するソースファイル/フォルダーです。また、_xパラメーターには、含めないファイル/フォルダーを指定します。上記が何らかの理由で機能しない場合は、代わりにこれを試してください:
zip -r Target.zip Source -x "*.DS_Store" -x "__MACOSX"
zipコマンドラインユーティリティを作成したことがない__MACOSXディレクトリを、その最初のスニペットは、作業を行い、そして-x "__MACOSX"一部は必要ありません。
このAutomator Shell Scriptを使用して後で修正しています。コンテキストメニュー項目として表示されます(Finderに表示されているファイルを右クリック)。
while read -r p; do
zip -d "$p" __MACOSX/\* || true
zip -d "$p" \*/.DS_Store || true
done
zip -d "$p" __MACOSX/\* || true
zip -r "$destFileName.zip" "$srcFileName" -x "*/\__MACOSX" -x "*/\.*"
-x "*/\__MACOSX":あなたが言うように__MACOSXを無視してください。-x "*/\.*":.DS_Storeなどの非表示ファイルを無視します。また、Automator Serviceを構築して、Finderで簡単に使用できるようにすることもできます。必要に応じて、以下のリンクで詳細を確認してください。
zipコマンドラインユーティリティを作成したことがない__MACOSXディレクトリを、あなたはちょうどこのようなコマンドを実行することができます:
zip directory.zip -x \*.DS_Store -r directory
以下の出力a.zipでは、zipコマンドラインユーティリティで作成したものには__MACOSXディレクトリが含まれていませんが、a 2.zipFinderから作成したものには含まれています。
$ touch a
$ xattr -w somekey somevalue a
$ zip a.zip a
adding: a (stored 0%)
$ unzip -l a.zip
Archive: a.zip
Length Date Time Name
-------- ---- ---- ----
0 01-02-16 20:29 a
-------- -------
0 1 file
$ unzip -l a\ 2.zip # I created `a 2.zip` from Finder before this
Archive: a 2.zip
Length Date Time Name
-------- ---- ---- ----
0 01-02-16 20:29 a
0 01-02-16 20:31 __MACOSX/
149 01-02-16 20:29 __MACOSX/._a
-------- -------
149 3 files
-x .DS_Store.DS_Storeディレクトリ内のファイルは除外しませんが、-x \*.DS_Store。
トップレベルの複数のファイルのZIPアーカイブのファイルそれがされていない場合ので、通常は、単一のディレクトリである必要があり、いくつかのアンアーカイビングUtilitesを(のようにunzipして7zではなく、アーカイブユーティリティ、Unarchiver、unarまたはdtrx)は、アーカイブが抽出されるとファイルが見つかり、ファイルを見つけるのが難しくなります。そのような複数のアーカイブが同時に抽出されると、どのファイルがどのアーカイブに属しているかを区別するのが難しくなります。
アーカイブユーティリティ__MACOSXは、少なくとも1つのファイルに拡張属性、ファイルフラグ、リソースフォークなどのメタデータが含まれているアーカイブを作成する場合にのみ、ディレクトリを作成します。__MACOSXディレクトリは、そのファイル名で開始のAppleDoubleファイルが含まれている._OS X固有のメタデータを格納するために使用されていることを。のzipコマンドラインユーティリティの廃棄は、エイリアスファイル内の情報がリソースフォークに格納されているので、このようなタグなどのメタデータは、失われ、そのエイリアスが動作を停止していることも意味拡張属性、ファイルフラグ、およびリソースフォーク、などのメタデータ。
通常、OS X固有のメタデータを破棄できますが、メタデータファイルに含まれるものを確認するには、を使用できますxattr -l。xattrリソースフォークとファイルフラグも含まれます。これらは実際には拡張属性として保存されていなくても、拡張属性インターフェイスを介してアクセスできるためです。Archive Utilityとzipコマンドラインユーティリティの両方がACLを破棄します。
できません。
しかし、あなたができることは、圧縮後にそれらの不要なフォルダを削除することです。コマンドラインzipは異なる引数を取ります。1つ-dは、正規表現に基づいてコンテンツを削除するためのものです。したがって、次のように使用できます。
zip -d filename.zip __MACOSX/\*
あなたが意味するかzip、コマンドラインツールやFinderのcompressコマンドを?
についてzipは、--data-forkオプションを試すことができます。--no-extraそれでもうまくいかない場合は、を試してみてください。ただし、uid / gidやファイル時間など、価値のある他のファイルメタデータは無視されているようです。
FinderのCompressコマンドについては、その動作を制御するオプションがないと思います。単純なケースです。
もう1つのツール、およびFinderが実際に内部で使用するツールはdittoです。とともに-c -kオプション、それはzipアーカイブを作成します。このツールを使用すると、あなたが試すことができ--norsrc、--noextattr、--noqtn、--noaclおよび/または単にオフのままに--sequesterRsrc(manページによると、ために責任があるかもしれない、オプション__MACOSXのサブディレクトリを)。ただし、おそらく存在しない--sequesterRsrcということは、AppleDouble形式を使用することを単に意味します。これは、1つの__MACOSXディレクトリの代わりに至る所に._ファイルを作成します。
既存の回答をすべて読んだ後、私にはより良い解決策があります。ワークフローを1回右クリックするだけですべてを実行できます。 NO追加のソフトウェア、NOは、コマンドラインに詰め込むと複雑NOを殻のトリックを。
自動化ワークフロー:
ステップ2:入力をパラメーターとして使用して、Shellコマンドを実行します。以下のコマンドをコピーします。
zip -d "$@" "__MACOSX/*" || true
zip -d "$@" "*/.DS_Store" || true
保存して完了です!フォルダまたはファイルの大部分を右クリックして、サービスメニューからワークフローを選択します。メタデータのないアーカイブが一緒に作成されます。
これは__MACOSX、tarコマンドでファイルを圧縮するときにディレクトリを回避する方法です:
$ cd dir-you-want-to-archive
$ find . | xargs xattr -l # <- list all files with special xattr attributes
...
./conf/clamav: com.apple.quarantine: 0083;5a9018b1;Safari;9DCAFF33-C7F5-4848-9A87-5E061E5E2D55
./conf/global: com.apple.quarantine: 0083;5a9018b1;Safari;9DCAFF33-C7F5-4848-9A87-5E061E5E2D55
./conf/web_server: com.apple.quarantine: 0083;5a9018b1;Safari;9DCAFF33-C7F5-4848-9A87-5E061E5E2D55
最初に属性を削除します。
find . | xargs xattr -d com.apple.quarantine
find . | xargs xattr -lもう一度実行し、xattr属性を持つファイルがないことを確認します。その後、あなたは行ってもいいです:
tar cjvf file.tar.bz2 dir