
sh fizmyzip.sh
現在のフォルダーの下にあるすべての zip ファイルから不要なファイルを削除するために実行しようとしていますfizmyzip.sh
。
zip -d *.zip __MACOSX/\*
zip -d *.zip "*/.DS_Store"
a-b.zip
しかし、と一致させることはできませんab.zip
。 どうすればこれを修正できますか?
答え1
シェルは*.zip
に展開されるab.zip a-b.zip
ので、コマンドは
zip -d ab.zip a-b.zip __MACOSX/\*
zip -d ab.zip a-b.zip "*/.DS_Store"
フラグの後の引数には、ターゲット zip ファイルが 1 つだけ必要です-d
。他の引数は、削除するファイル/パターンです。これが、 に対してのみ機能する理由ですab.zip
。
そこで for ループを使用します:
for zipf in *.zip; do zip -d "$zipf" "__MACOSX/*" "*/.DS_Store"; done