На MacOSX *.zip не может соответствовать ab.zip, только ab.zip. Как это исправить?

На MacOSX *.zip не может соответствовать ab.zip, только ab.zip. Как это исправить?

Я пытаюсь запустить 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"

В аргументе после -dфлага должен быть только один целевой zip-файл. Остальные аргументы — это файлы/шаблоны, которые нужно удалить. Вот почему это работает только для ab.zip.

Поэтому используйте цикл for:

for zipf in *.zip; do zip -d "$zipf" "__MACOSX/*" "*/.DS_Store"; done

Связанный контент